创建以太坊合约(去以太坊)

时间:2015-11-25 22:25:18

标签: 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})

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

6 个答案:

答案 0 :(得分:10)

ABI是您的合同公开的界面。 “evmCode”是您的合同的以太坊字节代码。

要解决您的问题,请转到https://chriseth.github.io/browser-solidity/并插入您的Solidity in。右侧的字节码字段将为您提供“evmCode”的值,接口将为您提供ABI。

您还可以从“Web3部署”复制代码段并将其粘贴到代码中以部署合同。

答案 1 :(得分:1)

ABI基本上是面向公众的界面,它显示可调用的方法。 获得abi的最简单方法是使用https://remix.ethereum.org。只需粘贴代码并在“合同”标签中即可。在该列的底部,您会找到一个链接,上面写着“合同详细信息”,基本上就是ABI json

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

答案 2 :(得分:0)

您可以尝试使用Etherlime shape或Truffle框之类的工具将整个示例项目包含合同,测试和js用法。从这里您可以开始前进。

答案 3 :(得分:0)

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"
 }]

这是在编制合同后返回的。您可以看到它包含我们合同中使用的方法。

答案 4 :(得分:0)

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

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

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

2.去etherscan.io在搜索栏中搜索你的合约地址哈希,你会得到合约。

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

can check this link to find abi

答案 5 :(得分:-2)

以太坊有一些很棒的工具可以用来测试区块链。如上所述,remix实际上对defi真的很有帮助