欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

区块链开发truffle新手入门和testrpc安装在Windows环境下

程序员文章站 2024-02-29 12:44:16
...

安装所需工具:

Node.js 点击打开链接

可以安装一个geth 点击打开链接 

geth是正式部署的时候需要用到的也可以在线测试区块链转账等一些功能,百度上有

而testrpc是开发者测试用的

先来安装一个truffle

npm install -g aaa@qq.com

查看版本:

truffle version

truffle -v

Truffle v4.0.0 (core: 4.0.0)
Solidity v0.4.18 (solc-js)

如果没有npm的需要安装

npm -v

5.6.0

接着安装testRPC

npm install -g ethereumjs-testrpc
/usr/local/bin/testrpc -> /usr/local/lib/node_modules/ethereumjs-testrpc/build/cli.node.js
+ aaa@qq.com
added 1 package and updated 2 packages in 10.648s

安装完成后....

可以开始了

我的操作还在之前就安装了git 在git的bash如下图:

区块链开发truffle新手入门和testrpc安装在Windows环境下

现在可以区块链了

先在git下创建一个目录:

创建之前需开启testrpc

如果开启成功如下图:

区块链开发truffle新手入门和testrpc安装在Windows环境下

会给你10 地址Accounts是账户keys就是密码了

在另外开启git-bash

新建一个文件

mkdir hello

cd hello

truffle init

Downloading...
Unpacking...
Setting up...
Unbox successful. Sweet!
 
Commands:  
    Compile:        truffle compile  
    Migrate:        truffle migrate  
    Test contracts: truffle test

然后找到目录就会看到

区块链开发truffle新手入门和testrpc安装在Windows环境下

contracts 智能合约目录
migrations 发布脚本目录
test 存放测试文件
truffle.js Truffle的配置文件

编译合约:

truffle compile

一般情况是成功的,比如mac系统 ubt系统 Linux系统,便便Windows就是不成功,

需要看下面的文章就会明白:http://truffleframework.com/docs/advanced/configuration

这个文章,

说的是需要添加:.cmd

truffle.cmd compile

truffle.cmd compile --compile-all(编译全部的)

创建一个合约并编译

hello.sol

contracts目录中新建一个hello.sol文件,代码如下:

pragma solidity ^0.4.23;
 contract hello {
 
  function sayHello() returns (string) {
   return "abc";
 }
}

代码中有两个方法:

sayHello方法是输出一段文字print(string name)方法是输出传入的内容。

编辑migrations/1_initial_migration.js部署脚本,将我们刚才创建的hello.sol文件设置到发布配置文件中,内容如下:

var Migrations = artifacts.require("./Migrations.sol");
var hello = artifacts.require("./hello.sol");
var Hello_mshk_top = artifacts.require("./Hello_mshk_top.sol");
module.exports = function(deployer) {
  deployer.deploy(Migrations);
  deployer.deploy(Hello_mshk_top);
  deployer.deploy(hello);
};

需要部署两个地方

使用artifacts.require语句来取得准备部署的合约。使用deployer.deploy语句将合约部署到区块链上。这边HelloWorldcontract的名称而不是文件名。因此可以用此语法读入任一.sol文件中的任一合约。

继续编译命令

truffle compile

编译后的文件都放在了./build/contracts目录下

Compiling ./contracts/Hello_mshk_top.sol...
Compiling ./contracts/Migrations.sol...
Writing artifacts to ./build/contracts

部署智能合约

编辑truffle.js配置文件,设置我们稍后要部署智能合约的位置,内容如下:

module.exports = {
  // See <http://truffleframework.com/docs/advanced/configuration>
  // to customize your Truffle configuration!
  networks: {
        development: {
          host: "localhost",
          port: 8545,
          network_id: "*"
        }
    }
};

truffle的智能合约项目部署,使用下面的命令:

truffle migrate

这个命令会执行所有migrations目录下的js文件。如果之前执行过truffle migrate命令,再次执行,只会部署新的js文件,如果没有新的js文件,不会起任何作用。如果使用--reset参数,则会重新的执行所有脚本的部署。不然会提示找不到方法

如果要部署到指定的网络,可以使用--network参数,例如:

truffle migrate --network live

多个网络的配置格式如下:

networks: {
  development: {
    host: "localhost",
    port: 8545,
    network_id: "*" // match any network
  },
  live: {
    host: "178.25.19.88", // Random IP for example purposes (do not use)
    port: 80,
    network_id: 1,        // Ethereum public network
    // optional config values:
    // gas  Gas limit used for deploys. Default is 4712388
    // gasPrice Gas price used for deploys. Default is 100000000000 (100 Shannon).
    // from - default address to use for any transaction Truffle makes during migrations
    // provider - web3 provider instance Truffle should use to talk to the Ethereum network.
    //          - if specified, host and port are ignored.
  }}

要确保testrpc是打开的状态

输入truffle console 

truffle console中预载了truffle-contract函数库,以方便操作部署到区块链上的合约。

区块链开发truffle新手入门和testrpc安装在Windows环境下

成功是这个样子的

接着继续调用:

HelloWorld.deployed().then(instance => contract = instance)

这边使用HelloWorld.deployed().then语句来取得HelloWorld合约的Instance(实例),并存到contract变量中,以方便后续的调用。

上面用的是Javascript ES6+的语法,这句也可以写成:

HelloWorld.deployed().then(instance => {
    contract = instance
});

还可以用ES5的写法:

HelloWorld.deployed().then(function(instance) {
  hello = instance;
});
truffle(development)> contract.sayHello.call()
'Hello World'

这里直接呼叫contract.sayHello()也会得到一样的结果。truffle-contract提供使用call()来读取只读(read only)的数据,这样就不需提供gas。因此如果遇到的操作需要向区块链写入数据,我们就不能用call语句了。

如此一来,我们已写好并部署完成了第一个智能合约,也验证了合约确实可以运作。

添加新的方法之后要重新编译一下truffle migrate --reset来执行

否则会调用失败

附一张图:

区块链开发truffle新手入门和testrpc安装在Windows环境下

https://blog.csdn.net/diandianxiyu_geek/article/details/78361621

http://blog.51cto.com/iceman123/2089553?utm_source=oschina-app

https://yq.aliyun.com/articles/212944

https://blog.csdn.net/aaa19890808/article/details/79418335

https://www.cnblogs.com/lion.net/p/7809954.html