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类型
}
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
创意,未来的工作方式
方军 / 中信出版社 / 2016-11-20 / 58.00元
知识工作者已成过去,创意工作者才是未来 工作的本质是创意 纵观我们身处的世界,除了自然美景,世间或伟大或平凡的事物,几乎都是人观念革新的产物,它们多数是我们在工作过程中群体创意的产物。 从工业时代到知识时代,大多数人通过掌握新知、持续学习,获得社会的认可和回报;但进入以大数据、人工智能、机器人为标志的新时代,单纯的学习已经不能满足社会对人的要求。算法和机器人正在取代人类很多重复性......一起来看看 《创意,未来的工作方式》 这本书的介绍吧!