钱包与账户

介绍
Stacks 钱包是用于存储加密货币、NFT 和其他数字资产的软件或硬件工具。它们也用于在去中心化应用(dApp)中建立链上身份。这些钱包通过单个区块链地址以密码学方式存储和管理每个用户的身份和资金,利用公钥密码学。
Stacks 钱包的用途
建立用户身份
存储资产
显示余额
签署交易
签名消息
参与比特币经济
Stacks 中的钱包由账户组成,使用基于账户的模型,而不是像比特币那样的 UTXO 模型。该模型比 UTXO 模型更简单,并且具有更传统的“余额”概念,类似于银行中遇到的情况。在此模型中,每个地址对特定代币都有一个单一的“余额”数值,当交易发送到/从该账户发送时,该余额会增加/减少。这也是大多数 Web3 生态系统使用的模型。在 UTXO 模型中,网络作为账本运作,每个 UTXO 类似于一张现金钞票。
Stacks 账户的组成部分
私钥 - 私钥是与单个公钥 1:1 配对的字母数字代码。切勿与任何人分享您的私钥。私钥用于证明对公钥的所有权以及如何花费由该密钥对持有的资产。 Stacks 中的示例私钥(32 字节后追加 0x01 字节):
5a4133fec2cf923d37238d3ba2fcd2ee9c8dce882c22218fd210d8a02ceb2c7401公钥 - 公钥是通过数学方法从私钥派生出来的。它可以安全共享,网络使用公钥来验证由私钥创建的签名,而不会泄露私钥本身。 Stacks 中的示例公钥(压缩格式):
02e8eb87862945d369511fdcce326ffef9a01b68c7d070e3ce685a5cbb9b1ecfc5地址(Principal) - 地址是从公钥派生的更短、更用户友好的表示。它是您在 Stacks 上用于接收 sBTC、STX、代币或 NFT 的共享地址,并作为用户的链上标识符。 Stacks 中的示例公共地址(c32check 编码):
SPM9G3CNGSCTB4956290NESM0MR9W9CCEPVEPSQC
Stacks 账户是拥有资产(例如 Stacks (STX) 代币)的实体。账户具有地址、私钥、nonce 和一个或多个资产余额。资产在没有账户所有者操作的情况下不能离开账户。所有对资产(以及账户余额)的更改都需要相应的交易。
所有 Stacks 钱包也支持比特币地址,从而实现跨 Stacks 和比特币生态系统的无缝参与。
创建
钱包的账户是从符合 BIP39 标准的 24 个单词助记词生成的。这通常被称为 助记词。助记词提供对 Stacks 账户的访问权限。
如果助记词丢失,则无法恢复对关联账户的访问。没有任何个人或组织可以恢复丢失的助记词。
生成新的 Stacks 账户最简单的方法是使用 Stacks CLI:
make_keychain 会创建以下文件:
助记词
用于访问账户的 24 个单词助记词,使用 BIP39 并具有 256 位熵生成
keyInfo.privateKey
账户的私钥。进行代币转账时需要,通常称为 senderKey
keyInfo.address
账户的 Stacks 地址
keyInfo.btcAddress
该账户对应的 BTC 地址。
keyInfo.wif
btcAddress 的私钥(压缩格式)。
keyInfo.index
账户的 nonce,从 0 开始
请注意,每个新私钥都会自动对应一个新账户。无需在 Stacks 区块链上手动实例化账户。
除了使用 CLI 创建之外,还可以使用 Stacks Transactions JS 库:
最后,您也可以使用支持 Stacks 的钱包生成新账户,例如 Leather, Xverse,或者 Asigna.
处理不同的格式
对于新的 Stacks 开发者来说,在开发中指定 Stacks 的 principals(即地址)时,常常会被不同的表示方式所困扰。
下面是针对 3 种不同用例处理 principals 的细分说明。

Stacks 与比特币地址的关联
使 Stacks 与其 L1 结算层比特币紧密相连的原因在于它们的许多共同点。其中之一是两者都基于 P2PKH 格式使用类似的地址生成方案,这允许比特币地址和 Stacks 地址共享相同的公钥哈希。如果对一个传统比特币地址进行 base58check 解码,就可以揭示公钥哈希,然后可以用该哈希生成对应的 c32check 编码的 Stacks 地址。
在编程上,您也可以使用一个称为 b58ToC32的方法,来自 c32check javascript 库,它可以为您抽象该转换。

其他资源
最后更新于
这有帮助吗?