美文网首页我爱编程
编写智能合约

编写智能合约

作者: Randy_ed88 | 来源:发表于2018-08-09 15:52 被阅读23次

    引言

    文本将使用目前市面上最活跃的智能合约开发框架truffle(truffle是最受欢迎的以太坊开发框架,其使命是让您的生活变得更轻松)来进行开发。

    学习目标

    1. 了解智能合约

    2. 简单环境搭建

    3. 能够利用Solidity编写Hello World合约

    4. 合约部署

    5. 合约互动

    什么是智能合约?

    合约是以太坊区块链上特定地址代码和数据的集合,合约账户能够在它们之间传递信息以及实际计算.合约以以太坊特定的二进制格式-称为以太坊虚拟机(EVM)字节码存在区块链上。

    合约通常使用一些高级语言如solidity编写,然后编译成字节码上传到区块链上。

    环境搭建

    1.首先确保已经安装了Node.js,并且版本在5.0以上

    2.安装truffle

    npm install -g truffle
    

    3.选择一个以太坊客户端

    推荐使用GANACHE(一个用于以太坊开发的个人区块链),使用ganache,您可以快速了解您的应用程序如何影响区块链,并反应您的帐户,余额,合同创建和gas花费等细节

    编写智能合约

    1.创建项目

    新开一个终端,输入如下命令:

    mkdir HelloWorld 
    cd HelloWorld
    truffle init
    

    项目结构:

    contract:存放智能合约的目录

    migrations:存放发布智能合约脚本的目录

    test:存放测试应用和合约文件的目录

    truffle.js:truffle配置文件

    truffle-config.js:truffle配置文件(用来解决WINDOWS下命名空间冲突问题)

    2. 创建HelloWorld合约

    创建合约有多种方式,这里我们使用truffle命令创建(您也可以在contracts目录下新建)

    truffle create contract HelloWorld
    

    编写HelloWorld.sol内容如下:

    pragma solidity ^0.4.4;
    
    contract HelloWorld {
        function sayHello() returns (string) {
           return ("Hello World");
        }
    }
    
    

    3. 编译合约

    输入如下命令:

    truffle compile
    

    4. 部署

    在部署之前我们首先启动GANACHE,启动之后的GANACHE如图:

    image5.png

    系统默认初始化了10个账户,每个账户有100eth

    在终端输入如下命令:

    truffle create migration helloworld_migration
    

    xx_helloworld_migration.js就是我们生成的migration文件(您也可以在migrations文件下手动创建)

    接着我们修改xx_helloworld_migration.js的内容,如下:

    var HelloWorld = artifacts.require("HelloWorld");
    
    module.exports = function(deployer) {
        // deployment steps
        deployer.deploy(HelloWorld);
    };
    

    artifacts.require("HelloWorld")这里返回了后续部署脚本与之交互的合约抽象,另外注意这里的HelloWorld是合约名,不是合约文件名

    由于truffle默认的配置端口是8454,我们使用的GANACHE的端口是7545,所以我们修改truffle.js,使其内容如下:

    module.exports = {
        networks: {
            development: {
                host: "127.0.0.1",
                port: 7545,
                network_id: "*" // Match any network id
            }
        }
    };
    
    

    最后我们使用truffle命令进行部署:

    truffle migrate 
    

    可以看到我们GANACHE上已经有所变化了

    image10.png

    合约交互

    truffle提供了两种交互方式truffle console和truffle develop,这里我们使用truffle console,

    image11.png

    这时我们已经成功运行开发模式的truffle console了,接下来我们获取合约实例

    image12.png

    最后我们通过实例,调用sayHello方法

    image13.png

    至此我们的合约就编写完成了,有任何问题欢迎讨论

    相关文章

      网友评论

        本文标题:编写智能合约

        本文链接:https://www.haomeiwen.com/subject/dsqcbftx.html