package accounts import ( "math/big" ethereum "github.com/ethereum/go-ethereum-test" "github.com/ethereum/go-ethereum-test/common" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum-test/event" ) // 一个账号是20个字节的数据。 URL是可选的字段。 type Account struct { Address common.Address `json:"address"` // Ethereum帐户地址 AddressLength = 20 URL URL `json:"url"` // 后端可选的资源定位器 } type Wallet interface { // URL检索可访问此钱包的规范路径。它是 //用户通过上层定义一个 排序 顺序从多个钱包 //后端。 URL() URL //状态返回文本状态,以帮助处于当前状态的用户 //钱包。它还返回一个错误,指示钱包可能出现的任何故障 //遇到 Status() (string, error) // Open初始化对wallet实例的访问。它不是用来解锁的 //解密帐户密钥,而不是简单地建立到硬件的连接 //钱包和/或访问派生种子。 // //密码短语参数可能被a的实现使用,也可能不被使用 //特别的钱包实例。没有密码开启方法的原因 //是努力统一钱包处理,无视不同 //后端提供者。 // //请注意,如果你打开一个钱包,你必须关闭它以释放任何分配 //资源(在使用硬件钱包时尤其重要)。 Open(passphrase string) error //关闭释放由open wallet实例持有的任何资源。 Close() error //帐户检索钱包当前知道的签名帐户列表 //of.对于等级决定论的钱包,列表不会是详尽的, //只包含在帐户派生期间显式固定的帐户。 Accounts() []Account //包含一个帐户是否属于这个钱包的返回值。 Contains(account Account) bool //派生试图显式地派生一个层次决定论帐户 //指定的派生路径。如果需要,派生帐户将被添加 //到钱包的跟踪账户列表。 Derive(path DerivationPath, pin bool) (Account, error) // DerivationPath 是[]uint32类型 //selfderived设置了一个基本帐户派生路径,钱包从中尝试 //发现非零帐户并自动添加到跟踪列表 //账户。 //注意,自派生将增加指定路径的最后一个组件 //反对使用子路径来查找帐户 //非零分量。 // //你可以通过调用nil调用selfderived //链状态读者。 SelfDerive(base DerivationPath, chain ethereum.ChainStateReader) // SignHash请求钱包在给定的hash上签名。 // //它只通过其中包含的地址查找指定的帐户, //或通过嵌入URL字段的任何位置元数据进行选择。 // //如果钱包需要额外的身份验证来签署请求(例如 //解密账户密码,或验证交易的PIN码 //将返回一个AuthNeededError实例,其中包含用户的信息 //关于哪些字段或操作是需要的。用户可以通过提供重试 //通过SignHashWithPassphrase或通过其他方式(例如解锁)提供所需的详细信息 //密钥存储库中的帐户) SignHash(account Account, hash []byte) ([]byte, error) // SignTx请求钱包在指定的交易中签名。 // //它只通过其中包含的地址查找指定的帐户, //或通过嵌入URL字段的任何位置元数据进行选择。 // //如果钱包需要额外的身份验证来签署请求(例如 //密码解密账户,或PIN码验证交易), //将返回一个AuthNeededError实例,其中包含用户的信息 //关于哪些字段或操作是需要的。用户可以通过提供重试 //通过SignTxWithPassphrase或其他方式(例如解锁)获得所需的详细信息 //密钥存储库中的帐户)。 SignTx(account Account, tx *types.Transaction, chainID *big.Int) (*types.Transaction, error) // SignHashWithPassphrase请求钱包用 //指定密码作为额外的身份验证信息。 // //它只通过其中包含的地址查找指定的帐户, //或通过嵌入URL字段的任何位置元数据进行选择。 SignHashWithPassphrase(account Account, passphrase string, hash []byte) ([]byte, error) // SignTxWithPassphrase请求钱包在给定的事务中签名 //指定密码作为额外的身份验证信息。 // //它只通过其中包含的地址查找指定的帐户, //或通过嵌入URL字段的任何位置元数据进行选择。 SignTxWithPassphrase(account Account, passphrase string, tx *types.Transaction, chainID *big.Int) (*types.Transaction, error) } type Backend interface { //钱包检索后端当前知道的钱包列表。 // //默认情况下,归还的钱包不会被打开。对于软件HD钱包这 //意味着没有基本的种子被解密,对于硬件钱包来说没有实际的 //建立连接。 // //结果钱包列表将根据内部的字母顺序进行排序 // URL由后端分配。因为钱包(尤其是硬件)可能会来 //go,同一个钱包可能会出现在列表的不同位置 //以后的检索。 Wallets() []Wallet //订阅创建一个异步订阅来接收通知 //后端检测钱包的到达或离开。 Subscribe(sink chan<- WalletEvent) event.Subscription } type WalletEventType int type WalletEvent struct { Wallet Wallet // Wallet 实例 到达 或者 离开 Kind WalletEventType // 系统中发生的事件类型 int类型 }
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。