以太坊合约简单部署和使用
1.准备一个已编写的合约:
——该合约是用solidity语言编写
pragma solidity ^0.4.0; contract test { function multiply(uint a) returns(uint d) { return a * 7; } }
- 编译合约
想要部署合约需要得到合约代码的ABI和EVM code。
一个编译合约的在线编译网站:
http://chriseth.github.io/browser-solidity/#version=soljson-latest.js
图中Bytecode和interface就是我们需要的结果。
- 部署合约
在部署合约前,我们要明确需要以下几项条件:
一个有币的账户;
该账户已解锁;
编译合约得到的abi(interface)和code(bytecode)。
//定义abi
>abi=[{constant:false,inputs:[{name:'a',type:'uint256'}],name:'multiply',outputs:[{name:'d',type:'uint256'}],type:'function'}]
//创建合约
>multiplyContract = web3.eth.contract(abi)
//解锁账户
>personal.unlockAccount(eth.coinbase, '123', 10000)
第一个参数是账户地址.
第二个参数:账户密码.
第三个参数:账户解锁持续的时间, 以毫秒为单位
//部署合约。data为上述编译得到的Bytecode
>multiply=multiplyContract.new({from:eth.coinbase,data:"0x60606040523415600b57fe5b5b60788061001a6000396000f300606060405263ffffffff60e060020a600035041663c6888fa181146020575bfe5b3415602757fe5b60306004356042565b60408051918252519081900360200190f35b600781025b9190505600a165627a7a7230582007a6259ba3d57941abda2e261e9a67958a3eda78b779d9dd8d42518791fddd590029"})
//我们知道部署合约的过程实际也是由创建合约的账户发送的一笔交易(即eth.coinbase账户)。需要挖矿进行确认。
>miner.start(4);admin.sleepBlocks(2);miner.stop();
- 与合约交互
//获取合约对象
>MyContract = eth.contract(abi)
//实例化合约
>myContract = MyContract.at(multiply.address)
//调用合约
>myContract.multiply.call(5)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架