【问题标题】:Ethereum: is validating wallet ownership possible?以太坊:验证钱包所有权是否可行?
【发布时间】:2017-06-19 22:46:37
【问题描述】:

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

用例:

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

  • 活动决定在活动结束后提供福利(类似于 kickstarter)。

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

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

:-/

【问题讨论】:

    标签: token ethereum smartcontracts


    【解决方案1】:

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

    交换将类似于以下内容:

    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's verifySig 工具(上面的演示在 Etherscan verifySig here)。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-27
      • 2022-11-13
      • 1970-01-01
      • 1970-01-01
      • 2022-10-22
      • 1970-01-01
      • 1970-01-01
      • 2018-03-15
      相关资源
      最近更新 更多