假设我有一个像Gnosis保险箱一样的multisig钱包,它需要(比方说)两个或三个签名者来批准任何给定的事务。换句话说,multisig钱包有它自己的钱包地址,而2或3个其他钱包地址必须批准进行的任何事务。
我想要的是,其中一个“其他”钱包实际上是一个聪明的合同。该合同的所有者当然会启动该合同,并将其置于活动状态。在活动状态下,它会自动批准由其他钱包所有者为此multisig钱包启动的任何事务。smart契约还具有一个功能,合同所有者可以将其从活动状态中提取出来,这样就不会批准任何事务。
流程如下:假设我们有一个多say钱包(如Gnosis保险箱),有两个所有者: 1。“约翰”和“2”“智能合同”。John决定将1Eth发送到另一个钱包,因此John使用与Gnosis安全multisig钱包相连的Metamask创建并签署此事务。接下来,John使用了其他一些软件(比如Javascript或python中的简单web3脚本),这些软件调用智能契约中的函数,请求批准该事务。Smart契约验证请求是否来自John,并验证Smart契约是否处于活动状态。所以,它得到了交易并签了名。现在交易已经完成了。
如果智能契约的所有者决定不再让John进行任何事务,那么他们可以将合同设置为非活动状态,现在John不能再进行任何事务处理。
这在明智的合同中是可能的吗?对于John调用以请求批准的函数,事务信息是如何传递的,还是智能契约可以使用其他方式来访问这个挂起的事务?智能合同如何批准这一交易?
最后,假设我想拥有Eth,BSC,Avax和Polygon链的这种能力。我想这意味着我必须有一个版本的智能契约运行在每一个这些链上?
是的,我有一个很好的理由来问这是否可能。这与监管和税收问题有关。
发布于 2022-01-19 20:20:37
我只能回答非常具体的保险箱,因为这在很大程度上取决于智能合同钱包。
有了保险箱,有两种可能的方法。
从保险箱的1.3.0版本开始,可以添加一个守卫。在处于“非活动”状态时,可以控制此保护以防止任何事务的发生。
另一种解决方案是在控制活动或非活动状态的契约上实现EIP-1271 (遗留版本)。当在isValidSignature状态下调用inactive时,该契约将恢复,否则将恢复预期值。
这里有一个示例,说明如何使用守护方法或EIP-1271签名来完成此操作:https://gist.github.com/rmeissner/26bae7deaac62db764abc9a03902094e
https://ethereum.stackexchange.com/questions/119377
复制相似问题