首先要开发以太坊的智能合约,需要EVM(以太坊虚拟机),也就是需要运行的环境,我们可以通过 geth 来设置开发环境:

geth --datadir testNet --dev console 2>> test.log

命令参数说明(更多命令详解可阅读Geth命令用法-参数详解篇):
–dev 启用开发者网络(模式),开发者网络会使用POA共识,默认预分配一个开发者账户并且会自动开启挖矿。
–datadir 后面的参数是区块数据及秘钥存放目录。
第一次输入命令后,它会放在当前目录下新建一个testNet目录来存放数据。
console 进入控制台
2>> test.log 表示把控制台日志输出到test.log文件

然后就进入了以太坊客户端 console 界面。

在 console 里,你可以通过相关命令来建立账户、挖矿、转账、查看区块高度等。

接着,建立智能合约:

pragma solidity >=0.4.22 <0.6.0;
contract man {
    string word;
    
    constructor(string memory s) public {
        word = s;
    }
    
    function say() public view returns (string memory) {
        return word;
    }
}

可以在 remix (在线 solidity 编译器)编译你的代码

选择编译器版本,然后编译,再点击 detail ,弹出详细信息,

var s = "hello";
var manContract = web3.eth.contract([{"constant":true,"inputs":[],"name":"say","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"s","type":"string"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}]);
var man = manContract.new(
s,
{
from: web3.eth.accounts[],
data: '0x608060405234801561001057600080fd5b506040516102ce3803806102ce8339810180604052602081101561003357600080fd5b81019080805164010000000081111561004b57600080fd5b8201602081018481111561005e57600080fd5b815164010000000081118282018710171561007857600080fd5b505080519093506100929250600091506020840190610099565b5050610134565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100da57805160ff1916838001178555610107565b82800160010185558215610107579182015b828111156101075782518255916020019190600101906100ec565b50610113929150610117565b5090565b61013191905b80821115610113576000815560010161011d565b90565b61018b806101436000396000f3fe608060405234801561001057600080fd5b5060043610610047577c01000000000000000000000000000000000000000000000000000000006000350463954ab4b2811461004c575b600080fd5b6100546100c9565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561008e578181015183820152602001610076565b50505050905090810190601f1680156100bb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156101555780601f1061012a57610100808354040283529160200191610155565b820191906000526020600020905b81548152906001019060200180831161013857829003601f168201915b505050505090509056fea165627a7a723058200ed7e0241815237b5376e1b879e7461322ec6e49ab75cf7474fc8e8547b1c8bc0029',
gas: ''
}, function (e, contract){
console.log(e, contract);
if (typeof contract.address !== 'undefined') {
console.log('Contract mined! address: ' + contract.address + ' transactionHash: ' + contract.transactionHash);
}
})

将文本复制起来,修改其中的变量,from 地址等,然后在 geth console 中输入,则部署成功

运行合约,发现error

解决方式:

eth.defaultAccount=eth.coinbase

最后得到正确结果:

最新文章

  1. poj3009
  2. iOS开发~UI布局(二)storyboard中autolayout和size class的使用详解
  3. mysql 1067 启动错误!!!
  4. js 如何判断页面里的某个值改变
  5. C语言断言
  6. 01顺序栈_Stack---(栈与队列)
  7. android服务Service(上)- IntentService
  8. java常用内存设置
  9. 【61】git项目实战的步骤总结
  10. javaScript(3)---语法、关键保留字及变量
  11. 好程序员web前端分享12个CSS高级技巧汇总
  12. Skyline TerraExplorer -二次开发- 加载外部数据的各种连接串
  13. 【更新】搭建 Zookeeper-3.4.11 集群
  14. Object.keys的使用
  15. mysql编译安装(详细)(转载)
  16. Cordova+jQuery Mobile+Spring REST
  17. Redis之哈希类型命令
  18. [leetcode]632. Smallest Range最小范围
  19. java学习-GET方式抓取网页(UrlConnection和HttpClient)
  20. SVN-如何删除 SVN 文件夹下面的小图标

热门文章

  1. hdu1080 Human Gene Functions() 2016-05-24 14:43 65人阅读 评论(0) 收藏
  2. 切勿用普通for循环遍历LinkedList
  3. Quartz.net 的 FAQ
  4. DBCC--LOG
  5. DBCC--CHECKDB--使用快照还是表锁
  6. 在Docker中运行纸壳CMS并配置使用MySql
  7. wpf数据绑定 - StringFormat的妙用
  8. ACTGame项目
  9. 浅谈java classloader
  10. Day 33 Socket编程.