本文主要是介绍multi sig contract的意义与实操,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最近了解algorand,本来呢,只是想起个relay node看看奖励机制的,然而却意外收获了multi sig这块比较实际的发现。
首先这种multi sig account/contract 在各类blockchain上面都有,但是应用上对于小韭菜却从来不多,一直到algo的relay node有潜在被黑风险,然后其中有个概念就是创建multi sig account放在relay node上。
multi sig 无非就是,多方都同意某个交易或者操作,这个操作才能实现。那么这个multi sig account上的操作,就基本都需要是多方同意后才能往下干。
接下来就是实操了以alg为例吧,看个意思。
首先创建一个multi sig account (本人用一个ledger nano上的alg account + 本机用goal account new生成的alg account 来得到这个Multi sig account)。
#注意此处所在的wallet就是本机的,不要用ledger nano那个wallet。addr 即 address的意思。
./goal account multisig new ledger_nano_account_addr pc_account_addr -T 2 -d data
这么一来,屏幕上会吐出一个multi_sig_account_addr。这里因为是algo特色,大概解释下参数含义
./goal account multisig new 就是要生成新的multi sig account了。注意,后面两个参与方的地址,顺序颠倒,生成出的合约地址也是不同的。 -T 是在问,这个Multi sig account以后干各类操作,要几个参与的account同意呀?这里是2,也就意味着要前面两个参与者都同意。-d 是描述blockchain ledger data 路径的,不是重点。
题外话,用这个multi_sig_account其实跑relay node就放心很多了。
接下来,我们就来描述下最简单的发送alg给其他账户这个操作。首先我们要生成一个tx文件,这玩意就是给不同账户去签名用的。
./goal clerk send -a 10000 -f multisig_account_addr -t some_other_account_addr -d data --note "multi_sending" -o moneyininin.tx
--note 此处不重要。-o生成tx,接下来要拿着继续用。
#以下这个命令可以看促成这个操作成功的必要条件,这里就不再细分析输出的内容了。
./goal clerk inspect moneyininin.tx
首先我们找本机account去同意这个交易。
#在默认的pc wallet下继续,
./goal clerk multisig sign -t moneyininin.tx -a pc_account_addr -d data
找ledger nano account再去同意, **注意此处还要切换默认钱包(./goal wallet -f "默认钱包名字")。
./goal clerk multisig sign -t moneyininin.tx -a ledger_nano_account_addr -d data
最后,切换回钱包,做最后操作,发送这个交易上链。
./goal clerk rawsend -f moneyininin.tx -d data
到这里就结束啦,链上可以看note。
https://algoexplorer.io/tx/KDG2TSFAR3BJYGAWZPAOPVRPTVOBHROAFBESLWNKNKKEJPL3OSFQ
参考资料:
https://www.algorand.com/resources/blog/algorand-hardware-wallet
https://www.algorand.com/resources/blog/account-and-key-security-at-algorand-3
这篇关于multi sig contract的意义与实操的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!