美文网首页
EOSIO开发(一)智能合约---helloworld

EOSIO开发(一)智能合约---helloworld

作者: JC86 | 来源:发表于2018-07-12 18:18 被阅读0次

我们用eos-dev docker镜像作为开发环境,这样省去很多eos编译带来的麻烦
docker的安装这里就不具体说可以查看相关docker安装资料
镜像的安装参考: https://developers.eos.io/eosio-nodeos/docs/docker-quickstart
镜像我用当前最新的版本:

image.png

启动 eos-dev docker命令

sudo docker run --rm --name eosio -d -p 8888:8888 -p 9876:9876 -v /tmp/work:/work -v /tmp/eosio/data:/mnt/dev/data -v /tmp/eosio/config:/mnt/dev/config eosio/eos-dev /bin/bash -c "nodeos -e -p eosio --plugin eosio::wallet_api_plugin --plugin eosio::wallet_plugin --plugin eosio::producer_plugin --plugin eosio::history_plugin --plugin eosio::chain_api_plugin --plugin eosio::history_api_plugin --plugin eosio::http_plugin -d /mnt/dev/data --config-dir /mnt/dev/config --http-server-address=0.0.0.0:8888 --access-control-allow-origin=* --contracts-console"

查看eosio日志(可以看到不断打印,因为不断在打block)


sudo docker logs -f --tail 10 eosio

打开另外终端,进入eosio实例docker容器,以下的所有操作都在docker镜像实例执行

docker exec -it eosio /bin/bash
vim config.ini

找eosio账户公私钥,下步需要用到
signature-provider = EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV=KEY:5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3 为初始账户eosio主秘钥
创建钱包

wbscleos wallet create -n wbs

解锁

cleos wallet unlock -n wbs PW5JE3CtprTwbJkhrgAprF8Zn8mZGvtK42mgypNmGKS2ukrPkYviC

PW5JE3CtprTwbJkhrgAprF8Zn8mZGvtK42mgypNmGKS2ukrPkYviC 为wallet密码,改为自己生成的密码
导入初始账户eosio的主秘钥到钱包 (重要)

cleos wallet import 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3 -n wbs

载入默认合约eosio.bios

cleos set contract eosio contracts/eosio.bios -p eosio

创建秘钥

cleos create key

导入私钥到钱包

cleos wallet import -n wbs ${key private}

创建账户hw.a(cleos create account eosio user ${key public} ${key public})

cleos create account eosio hw.a EOS6eMjWnvZGev391ZAqswvz74nsWBU26WQT5dFnqLZhsmf9zfBKv EOS6eMjWnvZGev391ZAqswvz74nsWBU26WQT5dFnqLZhsmf9zfBKv

进入contracts文件夹创建自己的合约

cd contracts
mkdir helloworld
cd helloworld
vim helloworld.cpp

helloworld.cpp的代码内容:

#include <eosiolib/eosio.hpp>
#include <eosiolib/print.hpp>
using namespace eosio;
class helloworld : public eosio::contract {
public:
    using contract::contract;
    /// @abi action
    void hi(account_name user) {
        print("helloworld, ", name{user});
    }
};
EOSIO_ABI(helloworld, (hi))

编译生成wast文件

eosiocpp -o helloworld.wast helloworld.cpp

生成abi文件

eosiocpp -g helloworld.abi helloworld.cpp

返回根目录

cd ../../

发布合约

cleos set contract hw.a contracts/helloworld -p hw.a

合约调用

cleos push action hw.a hi '["jc"]' -p hw.a

效果:


image.png

相关文章

网友评论

      本文标题:EOSIO开发(一)智能合约---helloworld

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