创建以太坊合约 (go ethereum)
Creating Ethereum Contracts (go 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.contract 方法的 "abi" 参数是什么?另外,我会在 "evmCode" 参数中加入什么?在这个特定的例子中,似乎我会为 "arg1" 输入一个整数,但不确定完整的例子应该是什么样子。
ABI 是您的合约公开的接口。 "evmCode" 是您合约的以太坊字节码。
要解决您的问题,请转至 https://chriseth.github.io/browser-solidity/ 并插入您的 Solidity。右侧的字节码字段将为您提供 "evmCode" 的值,接口将为您提供 ABI。
您还可以复制 "Web3 deploy" 中的代码片段并将其粘贴到您的代码中以部署您的合约。
ABI 基本上是面向 public 的界面,它显示了可以调用的方法。
获取 abi 的最简单方法是使用 https://remix.ethereum.org 。只需粘贴您的代码,然后在 Contract 选项卡中,在该列的底部,您会找到一个 link,上面写着 Contract details,基本上就是 ABI json
反过来你也可以使用web3的contracts.Introduction.interface
api来获取abi。
您可以尝试使用 Etherlime shape 或 Truffle boxes 等工具将整个示例项目与合同、测试和用法一起放入 js。您可以从这里开始前进。
ABI 是应用程序二进制接口。由 solidity 编译器 returns 编译时的合同具有不同方法的对象。 ABI和Bytecode基本都是用到的方法。 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"
}]
编译合约后返回。你可以看到它由我们合同中使用的方法组成。
ABI 是智能合约的代表,可以使用 java 脚本读取。要从以太坊中已部署的合约帐户读取数据,您需要一些额外的详细信息,例如 abi。
获取任意智能合约abi的步骤:
1.Each 合约的合约哈希地址类似于 this:0x0D8775F648430679A709E98d2b0Cb6250d2887EF
2.Go 到 etherscan.io 并在搜索栏中搜索您的合约地址哈希,您将获得合约。
3.In 合同转到代码,在那里你可以找到这个 abi
尝试按照 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.contract 方法的 "abi" 参数是什么?另外,我会在 "evmCode" 参数中加入什么?在这个特定的例子中,似乎我会为 "arg1" 输入一个整数,但不确定完整的例子应该是什么样子。
ABI 是您的合约公开的接口。 "evmCode" 是您合约的以太坊字节码。
要解决您的问题,请转至 https://chriseth.github.io/browser-solidity/ 并插入您的 Solidity。右侧的字节码字段将为您提供 "evmCode" 的值,接口将为您提供 ABI。
您还可以复制 "Web3 deploy" 中的代码片段并将其粘贴到您的代码中以部署您的合约。
ABI 基本上是面向 public 的界面,它显示了可以调用的方法。 获取 abi 的最简单方法是使用 https://remix.ethereum.org 。只需粘贴您的代码,然后在 Contract 选项卡中,在该列的底部,您会找到一个 link,上面写着 Contract details,基本上就是 ABI json
反过来你也可以使用web3的contracts.Introduction.interface
api来获取abi。
您可以尝试使用 Etherlime shape 或 Truffle boxes 等工具将整个示例项目与合同、测试和用法一起放入 js。您可以从这里开始前进。
ABI 是应用程序二进制接口。由 solidity 编译器 returns 编译时的合同具有不同方法的对象。 ABI和Bytecode基本都是用到的方法。 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"
}]
编译合约后返回。你可以看到它由我们合同中使用的方法组成。
ABI 是智能合约的代表,可以使用 java 脚本读取。要从以太坊中已部署的合约帐户读取数据,您需要一些额外的详细信息,例如 abi。
获取任意智能合约abi的步骤:
1.Each 合约的合约哈希地址类似于 this:0x0D8775F648430679A709E98d2b0Cb6250d2887EF
2.Go 到 etherscan.io 并在搜索栏中搜索您的合约地址哈希,您将获得合约。
3.In 合同转到代码,在那里你可以找到这个 abi