我正在尝试使用 testrpc & truffle 部署智能合约。我的智能合约就像 HelloWorld 一样简单。合约部署成功,0xfd52dd6fd4002b86ccbd3ae7c7a3e1a9d16c3648 这个地址。我唯一不明白的是,合同应该涉及两方。当我运行这个命令HelloWorld.deployed()
时,我只是从地址获取。我想要两个参数,即FROM & TO。我的问题是如何 在以太坊中签署合同时包含TO参数?
2 回答
ContractName.deployed()
应该给出合约实例,然后你可以调用.address
它来获取地址。看起来这就是那个家伙正在做的事情。我认为他不认为合同本身有一个由他的钱包签名的地址。
智能合约不仅仅是两方之间的合约,它是以太坊区块链上可以被挖掘的一段可验证的代码。它有一个地址,你正在从你的钱包中广播它。您调用“发件人”地址的地址是您部署的合约的地址。
智能合约不一定是您所想的合约。我假设您正在想象一份合同,其中两方同意某事,并且存储在区块链上作为证据?
情况不一定如此。
智能合约只是一个用 Solidity 编写的程序,它位于以太坊区块链上,该程序可以随心所欲地与尽可能多的人一起做任何事情。
即我可以创建一个“智能合约”,它接收以太币并在特定日期之前收集它,届时它将释放所有收集到的以太币到指定的帐户。
这不必由任何人“签名”,任何数量的参与者都可以来将以太币存入该合约,直到特定日期,其他人都不能存入。
“合约”的本质是每个参与的人都可以看到以太币在那个时间之前被保证被锁定,并且保证将收集到的东西释放到那个地址——这是不能改变的。通过与合同交互,您实质上是在“签署”表示您同意合同所涉及的条款。
因此,在您的“hello world”合约示例中,您可以将其部署到网络中,此时任何希望运行该合约的人都可以检查它的功能,然后运行它以显示“hello world”。
因此,您列出一个“发件人”地址来指定它的来源,但“收件人”地址是不必要的,因为任何人都可以看到/与之交互。
如果您想限制合约供某些特定人员使用,您必须在合约上列出这些地址,并确保合约在有人打电话时检查他们是否来自指定的地址,如果不是,您可以恢复,这将发送一条消息到用户说他们不允许运行该功能等。