本文介绍了多重签名钱包的概念、应用及其具体实现过程。文章详细讲解了多重签名钱包的工作原理,分为两种类型,并提供了使用 BuildBear 平台进行智能合约创建、部署和交互的具体步骤与示例,适合对区块链开发感兴趣的读者。
一个使用多个签名的数字钱包被称为 multisig 钱包。这意味着需要多个私钥来签名和批准加密交易。
简单来说,MultiSig 钱包可以理解为一个有多个锁的箱子,每个锁都有独特的钥匙,只有当所有的锁或某些数量的锁被解锁时,箱子才能打开。例如,一个银行的保险箱,其中一把钥匙在你手中,另一把在银行,只有当两把钥匙都使用时,箱子才能被打开。
MultiSig 钱包有两种类型:
n
的 n
类型:在这种类型中,如果有 n
把独特的钥匙,则需要所有的 n
把钥匙才能访问钱包,例如 2 的 2,3 的 3 类型的 MultiSig 钱包。这种类型非常安全,但也存在很大的风险,如果丢失任何一把钥匙,则无法访问整个钱包。n
的 m
类型:这是一种更易于访问的钱包类型,如果钱包总共有 m
把独特的钥匙,则只需要 n
把钥匙即可访问,其中 n
< m
。通常是 2-of-3 或 3-of-4 的形式,需要大多数人的批准才能访问钱包。这是安全的,即使你丢失了一把钥匙,也不会失去对整个钱包的访问权限。(A) 本地设置
你可以从这里克隆教程库:Github,然后进入 multisig 文件夹。
(B) 安装
一旦代码设置在你的本地系统上,你需要确保使用 npm i
或 yarn install
安装所有依赖项,具体取决于你的个人偏好。
(C) 理解 MultiSig 钱包的结构
(C1) multisig.sol 的构造函数
这个合约的构造函数接受两个参数:
(a) 所有者列表和
(b) 执行任何交易所需的最低批准数。
(C2) 创建和批准交易
在 multisig 钱包中,重要的是所需数量的所有者在交易执行之前批准交易。任何人都可以创建并提交交易请求所有者批准。这是通过 submitTransaction
函数完成的。它生成一个交易索引,可以在将来参考该交易。
现在,所有者可以使用这个交易索引来批准交易,通过 confirmTransaction
函数。如果所需数量的所有者批准,交易才会执行,否则我们将等待其他人批准。
(C3) 执行交易
最后,一旦交易创建并获得所需数量的所有者的批准,可以由部署合约的所有者执行它。为使其执行,我们首先需要检查它是否以前没有执行过,以避免重复转账,并且该交易是否已获得所有者的批准,如果没有,则会引发错误。一旦执行,交易将标记为已执行,并触发事件。
我希望现在你对合约的结构已经清楚了,如果有疑问,请随时在评论中与我联系。是时候看看你的合约的运作了!
(D) 部署智能合约:multisig.sol
为了部署和演示的目的,我们将在 BuildBear 上部署智能合约 → buildbear.io
在 BuildBear 上创建私有测试网 🐻❄️ (你问为什么是 BuildBear?请看看这里:Where Localhost Fails 和 Win Web3 Hackathons, using BuildBear Testnet’s Analytics)
我们已从 BuildBear 获取到我们的 RPC,并更新了我们的 .env
文件以包含 RPC 端点。
我们已经将 hardhat.config.js
更新为以下内容:
要部署你的智能合约,请运行命令 npx hardhat run scripts/deploy.js --network buildbear
。
一旦你运行了上述命令,智能合约应该已成功部署,终端将提供智能合约被部署的地址,如下所示:
(E) 与我们的智能合约互动
💡 额外奖励,你可以与我的合约互动,多亏了 BuildBear!!!(更多关于 BuildBear 的好处 在这里](https://learnblockchain.cn/article/13408) , 这里 和 这里 _)
复制产生的地址,然后前往你私人版本的 BuildBear Explorer。你可以访问我的:BuildBear | Explorer。我的合约被部署在 0x322813Fd9A801c5507c9de605d63CEA4f2CE6c44
,因此我的合约可以在这里找到。
现在,是时候利用这个 multisig 钱包了。为此,请前往上述页面的合约选项卡,那里可以看到 读取合约 和 写入合约 选项。你可以先从读取合约部分查看合约的详细信息,例如合约的所有者、提交的交易数量等。最初,交易数量为 0,我已添加我的 3 个测试钱包作为合约的所有者。
我们来提交一笔交易。我将转帐 5 BB Eth 到我的一个测试钱包(0x07E2E295d73Bba059A4002f02803eaA7eF285b74
)。
为了执行这笔交易,至少需要得到 2 个钱包的所有者的批准。由于这是第一笔交易,因此交易索引为 0,我们将使用此索引在接下来的步骤中与合约交互。
一旦交易获得批准,我们必须使用相同的交易索引执行交易。你可以通过以下哈希检查执行交易:0x8653d6090e8f6e3d0bf2b79857c31484d1108201ea87fd09d024307eda090bd1
,可在 BuildBear explorer 上查找,或使用此链接。
BuildBear 帮助理解交易内部发生的事情,可真不错
如你所见,5 BB Eth 现在已转入测试帐户。如果没有提供钱包要求的 2 个批准,这是不可能发生的。
通过这一点,我们结束了关于 MultiSig 钱包的文章。
借助 BuildBear,我能够与你分享我的交易,并允许任何人,包括你,与合约交互。是的,你实际上可以在我列出的合约中提议一个交易→https://explorer.buildbear.io/node/adoring-satoshi-ed90b2/address/0x322813Fd9A801c5507c9de605d63CEA4f2CE6c44/writeContract。
使用我的私有水龙头,在这里获取你所需的任意本地Coin,请不要犹豫,给我发送交易→https://faucet.buildbear.io/adoring-satoshi-ed90b2。
BuildBear 为你提供了一个私有测试节点,使测试过程顺畅高效。我希望你也能跟随教程,构建你自己的 MultiSig 钱包。
如果在实现智能合约时遇到任何困难,请在评论中告诉我们,我们将帮助你解决。对于任何其他反馈或建议,请随时在评论区与我联系。
要了解更多关于 BuildBear 的信息,请阅读这里的 docs。
从 这里 获取上述 Github 代码。
如果你欣赏我们所做的事情,请在 Twitter 上关注我们,并加入 Telegram 群组Join the Telegram,如果你还没加入的话。
如果你喜欢我们的工作,请给我们一个掌声 👏 !并请分享这篇文章。
- 原文链接: medium.com/buildbear/lea...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!