C#以太坊Nethereum类库的Web3账户管理

每一笔交易都需要由帐户发送和签署。该帐户需要验证(签名),以便认证他们的以太帐户持有人或确认他希望与智能合约交互。

要发送一个交易,你要么管理你的帐户,并在本地签署原生交易,要么帐户将由客户端(Parity/Geth)管理,在发送交易时,在发送一个交易或手动解锁帐户之前,需要发送密码时。

Nethereum.Web3中,为了简化过程,可以使用两种类型的帐户。Account对象或ManagedAccount对象。它们都存储发送交易、私钥或密码所需的帐户信息。

在发送交易时,将选择传递交易的正确方法。如果使用TransactionManager、部署合约或使用合约函数,则交易将使用私钥离线签名,或者将使用密码发送personal_sendTransaction消息。

账户如何使用

使用私钥生成帐户,你可以生成新的私钥并使用Web3存储定义(与所有客户端兼容)来存储它,或者从任何存储中加载现有的密钥,或者从本地安装的客户端的密钥存储文件夹加载。

除了安全性之外的一个主要优点(避免在纯文本中传输口令)是,你不需要本地安装客户端,允许你使用像Infura这样的公共节点。

载入现有帐户

加密的帐户密钥存储文件中可以找到不同的位置,这取决于客户端和操作系统:

  • Geth:
    • Linux: ~/.ethereum/keystore
    • Mac: /Library/Ethereum/keystore *
    • Windows: %APPDATA%/Ethereum
  • Parity:
    • Windows %APPDATA%\Roaming\Parity\Ethereum
    • Mac: /Library/Application Support/io.parity.ethereum *
    • Linux: ~/.local/share/io.parity.ethereum

当使用net451或以上版本时,可以直接加载文件:

var password = "password";
var accountFilePath = @"c:\xxx\UTC--2015-11-25T05-05-03.116905600Z--12890d2cce102216644c59dae5baed380d84830c";
var account = Account.LoadFromKeyStoreFile(accountFilePath, string password);

如果你正在选择其他核心框架,例如.net core或netstandard,则不支持直接从文件中加载,为了主要的平台兼容性,在这种情况下,你需要提取json fist并将其作为参数传递。

var password = "password";
var keyStoreEncryptedJson =
             @"{""crypto"&
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值