以太坊:可以验证钱包所有权吗?



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

用例:

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

  • 活动
  • 决定在活动结束后给予津贴(类似于kickstarter)。

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

这种拥挤的露营是否需要启动智能合约?

:-/

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

交换将类似于以下内容:

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中)。

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

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

最新更新