我在学稳固。现在可以使用testrpc、块菌、MetaMask和MyEtherWalet编写和测试智能合同。基本上,MyEtherWalet提供了我在智能契约中定义的函数,因此我可以使用它们并将参数传递给它们,并且可以与部署在testrpc上的智能契约进行交互。
问:如果我将我的智能合同部署到实际的Ethereum区块链中,那么是否有任何用户界面可以像在MyEtherWalet中那样访问契约函数?
问题2: Web3在这里扮演什么角色?
发布于 2018-02-15 20:25:42
问:如果我将我的智能合同部署到实际的Ethereum区块链中,那么是否有任何用户界面可以像在MyEtherWalet中那样访问契约函数?
您可以使用节点的控制台接口,如下所示:
<path-to-geth>/geth attach <path-to-datadir>/geth.ipc console
Console为您提供javascript接口,您可以在其中操作节点的状态、调用api方法、查找块、帐户等。
问题2: Web3在这里扮演什么角色?
Web3是一个ethereum客户端库。它可以用不同的语言写成。最流行的(我认为)是Web3的javascript版本。实际上,使用geth的控制台,您将使用web3的所有功能。
发布于 2018-02-03 12:28:41
从技术上讲,要与已部署的合同进行交互,另一方必须知道合同的ABI,这是声明名称、返回值类型、作为合同开发人员决定可见的所有函数/字段的参数类型的正式接口。
为了简单起见,ABI是Json文档,请看下面的示例。
//This contract takes your money and store your addr
//for greetings. Nothing special. Then the deployer
//can destroy all and take money. Genius!
contract Hello{
address public greetings;
address public owner;
function Hello() public{
owner = msg.sender;
}
function () payable public{
greetings = msg.sender;
}
function takeMoneyAndDestroy() public{
require(msg.sender == owner);
selfdestruct(owner);
}
}
相应的ABI将是
[
{
"constant": true,
"inputs": [],
"name": "owner",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "greetings",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "takeMoneyAndDestroy",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"payable": true,
"stateMutability": "payable",
"type": "fallback"
}
]
一旦您在链上部署了这个契约,您就会得到一个合同地址,比如0x01。然后,您可以从像MyEtherWallet这样的钱包中访问这个契约,在https://www.myetherwallet.com/#contracts一节中,您可以很容易地插入地址和ABI。
下一步很简单,因为MyEtherWallet将允许您使用契约调用函数/事务。
关于Web3。这个库将浏览器中的html/js应用程序与"provider“服务(您的ETH完整节点或其他API生产者)连接起来,从而将调用转换为事务。
发布于 2018-07-01 15:40:08
问:如果我将我的智能合同部署到实际的Ethereum区块链中,那么是否有任何用户界面可以像在MyEtherWalet中那样访问契约函数?
答:您可以在remix.ethereum.org使用Remix。这也是将合同部署到主网络的好方法。要使用Remix部署您的合同,您必须:
如果您已经部署了一个契约,那么遵循相同的步骤,而不是在Remix中部署契约,而是在Run部分指定地址,其中写着“从地址加载契约”,然后单击"At Address按钮“。
你必须先编译你的合同,然后才能附加到它上。
“混合”很好,因为它允许您调试您的合同,还可以使用Javascript环境快速测试您的合同。它的工作方式类似于testrpc,但允许您使用UI调试您的合同。
问题2: Web3在这里扮演什么角色?
答: Web3是一个允许您与块链节点交互的库。它也被Metamask所使用。如果您计划实现一个必须与节点通信或使用Metamask的网页,则需要使用web3。
简而言之,web3是一个库,它允许您与ethereum节点(提供者)对话。
https://ethereum.stackexchange.com/questions/25605
复制相似问题