我创建了一个DAO智能合同,大约20人投票赞成提案。他们每个人都制造新的Tx。
离线签名是很好的,以尽量减少汽油成本。想知道离线签名是如何与合同功能一起工作的,对于多个签署不同选票的人也是这样吗?
我听说有很多人在灯光网络频道状态下签署他们的平衡协议。
发布于 2018-05-25 23:00:35
您使用签名的方式与在某个人签名时使用的方式相同。每个人都必须支付提交签名所需的交易费用。但是,您可以创建一个函数,它将自动解析所有签名的消息,比提交一个新事务来解析每个签名的消息稍微便宜一些。您可能会实现类似默克尔空投(https://blog.ricmoo.com/merkle-air-drops-e6406945584d)之类的东西。
在验证签名消息时有几个问题,我有一组契约和python签名程序,它们演示了签名消息所需的工作流:
当对消息进行签名时,它们会被以下数据所覆盖:https://github.com/postables/Postables-Payment-Channel/blob/7d2f91bb060f80b139cab72b5fdff79d116f6210/solidity/ChannelsV4.sol#L12
我还有一个python脚本,可以用来对消息进行签名:https://github.com/postables/Postables-Payment-Channel/blob/develop/python/signer.py
以下solidity函数详细说明了如何验证已签名的原始消息以及签名消息的签名者:https://github.com/postables/Postables-Payment-Channel/blob/7d2f91bb060f80b139cab72b5fdff79d116f6210/solidity/ChannelsV4.sol#L257
以下solidity函数详细介绍了如何验证消息的签名者:https://github.com/postables/Postables-Payment-Channel/blob/7d2f91bb060f80b139cab72b5fdff79d116f6210/solidity/ChannelsV4.sol#L192
发布于 2018-05-25 23:05:05
是的,您可以让人们脱机签名,收集所有签名,并将它们作为单个事务数据部分的一部分发送,并让契约检查有效签名的数量。这应该节省你的汽油,它通常会允许一个更简单的合同。
请参阅下面的多功能钱包示例:https://medium.com/@ChrisLundkvist/exploring-simpler-ethereum-multisig-contracts-b71020c19037
但是,请记住,您添加的每个签名都会增加发送它们的事务的气体成本,并且您可以在单个事务中使用的气体总量受到块气体限制的限制,这可能会发生变化。因此,如果可能需要的签名数量很高或没有限制,则可能仍然需要编写契约,以便将签名拆分到多个事务中。
https://ethereum.stackexchange.com/questions/49548
复制相似问题