1

如何验证某人拥有钱包地址?

用例:

  • 钱包所有者向众筹活动的钱包地址捐赠 10 ETH

  • 活动结束后,活动决定提供津贴(类似于 kickstarter)。

  • 如果贡献的钱包所有者有权获得津贴,那么该所有者如何要求该津贴?理想情况下,他们可以提供只有发送方/接收方知道的密钥,但活动只有交易收据和钱包地址,这些都是公开的。

这种众筹露营是否需要启动智能合约?

:-/

4

1 回答 1

0

虽然智能合约在上述情况下可能是一个有用的工具,但想要证明他们控制地址的用户可以使用与捐赠资金从其发送到活动的地址相关联的私钥签署消息。

交换将类似于以下内容:

Organization: Hooray we raised our goal and we had the great idea to
give everyone that participated a free t-shirt! Send us a signed message with the
word 'shirt' and your address and we will mail you a shirt.

然后,用户将转到控制他们发送交易的地址的钱包,并使用地址帐户签署一条消息:

> personal.unlockAccount('0x30ddF5144a0483e3c1d6E5f45C396aC72a487B9e',
     'examplepassword',60);
true
> eth.sign(eth.accounts[41], web3.sha3("shirt 123 Main St., Any Town, Any Country"))
"0x90e8f95ca6f44410572401ad5d16255914a23af76613580c436926985dfdbfdb2d808a691cb808ed32cb0cc419d306916c17dd26a8df53bbbc31826352d81ca31b"

然后,用户可以向组织发送一条消息(通过电子邮件等),其中包含他们用于发送资金的以太坊地址、他们签名的消息(在这种情况下shirt 123 Main St., Any Town, Any Country)和签名。然后组织可以将这三个输入到以太坊节点进行验证或使用在线服务,如Etherscan 的 verifySig工具(上面的演示在 Etherscan verifySig here中)。

当然,就像你提到的那样,这可以通过智能合约实现。作为向合约发送资金的回报,最终用户可以拥有允许他们从原始众筹合约完成后生成的新合约中兑换奖励的功能。

智能合约也可能是一个不错的选择,因为存在实施多重签名以从合约中提取资金的开源合约,并且合约还可以控制组织以何种利率筹集多少资金。

于 2017-06-22T06:11:19.413 回答