创建以太坊合约(go Ethereum)

  • 本文关键字:go Ethereum 创建 ethereum
  • 更新时间 :
  • 英文 :


尝试按照go ethereum的wiki示例创建一个基本合约:https://github.com/ethereum/go-ethereum/wiki/Contracts-and-Transactions

一切似乎都在起作用,直到我下到最后一行:

source = "contract test { function multiply(uint a) returns(uint d) { return a * 7; } }"
contract = eth.compile.solidity(source).test
primaryAddress = eth.accounts[0]
# **Problems start here **
MyContract = eth.contract(abi);
contact = MyContract.new(arg1, arg2, ...,{from: primaryAddress, data: evmCode})

eth.control方法的"abi"论点是什么?此外,我应该在"evmCode"参数中放入什么?在这个特定的例子中,我似乎会为"arg1"输入一个整数,但不确定完整的例子应该是什么样子。

ABI是合约公开的接口。"evmCode"是您合同的以太坊字节码。

要解决您的问题,请转到https://chriseth.github.io/browser-solidity/并插入Solidity。右侧的Bytecode字段将为您提供"evmCode"的值,Interface将为您带来ABI。

您还可以从"Web3deploy"中复制片段,并将其粘贴到代码中以部署您的合同。

ABI基本上是面向公共的接口,它显示了可以调用的方法。获得abi的最简单方法是使用https://remix.ethereum.org。只需粘贴您的代码和Contract选项卡。在列的底部,您会发现一个链接,上面写着Contract详细信息,基本上是ABI json

相反,您也可以使用web3的contracts.Introduction.interfaceAPI来获取abi。

ABI是可以使用java脚本读取的智能合约的表示。要从etherum中部署的合约帐户读取数据,您需要一些额外的细节,如ABI。

获取任何智能合约的abi的步骤:

1.每个合同都有这样的合同哈希地址:0x0D8775F648430679A709E98d2b0Cb6250d2887EF

2.访问etherscan.io并在搜索栏中搜索您的合同地址哈希,您将获得合同。

3.在合同中,转到代码,你可以在那里找到这个abi

可以检查此链接以查找abi

您可以尝试使用Etherlee shape或Truffle boxes等工具,在js中创建一个包含合同、测试和用法的完整示例项目。从这里你可以开始前进。

ABI是应用程序二进制接口。当solidity编译器编译合约时,它会返回具有不同方法的对象。ABI和字节码是基本上使用的方法。ABI用于与您的合同和前端交互(如果使用节点),字节码用于部署到Rinkeby(或任何以太坊网络)。

例如:
合同是:

pragma solidity ^0.4.17;
contract Inbox
{
    string public message;
    function Inbox(string initialMessage) public{
        message = initialMessage;
    }
    function setMessage(string newMessage) public{
        message = newMessage;
    }
}

其ABI为

interface: 
[{
    "constant":false,"inputs":[{
        "name":"newMessage","type":"string"
    }]
    ,"name":"setMessage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"
}
 ,{
     "constant":true,"inputs":[],"name":"message","outputs":[{
         "name":"","type":"string"
     }]
     ,"payable":false,"stateMutability":"view","type":"function"
 }
 ,{
     "inputs":[{
         "name":"initialMessage","type":"string"
     }]
     ,"payable":false,"stateMutability":"nonpayable","type":"constructor"
 }]

这是在编译合同后返回的。你可以看到它由我们合同中使用的方法组成。

最新更新