• 十分钟部署智能合约


    十分钟部署智能合约
    eos环境搭建
    1.git clone源代码
    git clonehttps://github.com/EOSIO/eos --recursive
    2.下载编译之后,里面有三个应用程序,这三个应用程序也都是命令行的:

    1、Cleos;

    2、Nodeos;

    3、Keosd。

    这三个应用程序之间有什么关系呢?我们现在使用的前端,怎么使用EOS呢?
    -Cleos,它是一个命令行程序。在前端使用EOS是通过Cleos输入命令,给EOS下达指令。
    -Nodeos,其实它就是挖矿客户端。在启动Nodeos之后,它自然就会产生区块。
    -Keosd,它是在后端启动。它的目的主要是管理钱包,可以创建私钥。为什么分成Nodeos和Keosd?
    我理解的是,Keosd可以认为是个轻客户端,因为有时候只需要进行钱包操作,不需要挖矿,就可以启动Keosd。

    节点启动
    第一步下载编译完成后
    cd build/programs/nodeos ./nodeos -e -p eosio --plugin eosio::wallet_api_plugin --plugineosio::chain_api_plugin --plugin eosio::account_history_api_plugin

    整个eos是一个插件式的结构 需要有一个主程序 其他的功能拓展都是一个插件。

    创建和管理钱包
    创建钱包
    Cleos wallet create
    创建一组秘钥
    cleos create key
    私钥导入钱包
    cleos wallet import
    查看钱包中的秘钥
    cleos wallet keys

    创建和管理账户
    帐号:一个在区块链上人类的可读标识符
    $ cleos createaccount eosio ${new_account} ${owner_key} ${active_key}
    备注:
    eos是超级用户 用来创建其他用户 eosio后面是新用户的用户名

    除了新账号之外 还有两个Key 一个是公钥(超级权限) 一个是active激活用的。(仅有转账权限)

    帐号命名规则 小个字符 仅包含这些字符 数字和字母小写

    eos权限许可

    Threshold是某个许可需要的阈值。比如你要做一件事儿,它可能有个阈值,这个阈值是一个量化,你必须要达到这个阈值才可以进行相应的操作。Weight表示权重。账号必须对应某个许可拥有的权重,就是你的权重要大于你的阈值,然后这件事儿你就可以做。

    两张有关的图说明权重:
    https://mp.weixin.qq.com/s/OniYBJ6zbjxPrQYlZMhRWQ

    publish就是一个定制化许可。我们每个用户也可以定义自己某些允许的一些操作。publish这里面的阈值是2,bob账号是2,stracy账号是2,这两个账号也可以单独做publish许可相关的操作。而publish的权限可能是比如发布一些消息、发布一些微博的操作。

    eos智能合约
    action trancaction
    对于EOS,它多了一个action的概念,action其实它也是对一个智能合约中的某个函数的调用。transaction是由一个或者多个action组合而成的关系,就是在一个transaction里,可以包含多个action,这样你可以在一个transaction里签一次名,就可以调多个函数,做一组操作。

    部署智能合约
    部署
    cleos set contract eosio build/contracts/eosio.bios -p eosio
    运行
    cleos set contracteosio.token build/contracts/eosio.token -p eosio.token
    调用create函数
    $ cleos push actioneosio.token create ‘[ “eosio”, “1000000000.0000 EOS”, 0, 0, 0]’ -p eosio.token
    转移100个pdf币到user用户 代码如下
    $cleos push actioneosio.token issue '[ "user", "100.0000 EOS","memo" ]' -p eosio

    Issue这个操作是用来发币,它后面跟了3个参数:
    一个是user,表示这个币发给谁;
    数字表示要给这个用户转多少钱,我这里转了100多个user的token;
    最后一个参数是是一个备注,相当于转账留言。

    调试智能合约
    官方推荐本地搭建节点 或者将信息pringt出来。 如果没有,那么你根本看不到打印信息。搭建本地节点后 能看到打印结果。

    eos的rpc接口
    前端:javascript html

    https://eosio.github.io/eos/group__eosiorpc.htm

    RPC的接口我们除了用C++或者用编程的方法去调用一些接口,我们可以用curl这种最简单的方法去调用这个接口。

    常用的api
    获取信息 版本
    获取区块信息
    获取账号信息

    eos编程示范: c++版
    ` // hello.cpp源代码

    include<eosiolib/eosio.hpp>

    include <eosiolib/print.hpp>

    using namespace eosio;
    class hello : public eosio::contract {
    public: using contract::contract;
    /// @abi action
    void hi( account_name user )
    {print( “Hello, ”, name{user} ); }
    };
    EOSIO_ABI( hello, (hi) )`

    测试部署合约
    编译
    $ eosiocpp -o hello.wasthello.cpp
    $ eosiocpp -g hello.abihello.cpp

    创建账号
    $cleos create account eosio hello.codeEOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4 ...

    部署
    cleos set contract hello.code../hello -p hello.code

    合约
    cleos push action hello.codehi '["user"]' -p user

  • 相关阅读:
    对拍源码QwQ
    BZOJ-3875: [Ahoi2014&Jsoi2014]骑士游戏(SPFA+DP)
    2017年10月19日23:31:57
    BZOJ-1064: [Noi2008]假面舞会 (综合性图论题)
    BZOJ-1002: [FJOI2007]轮状病毒(打表找规律or递推 + 高精度)
    BZOJ1397 Ural 1486 Equal squares
    BZOJ3417 Poi2013 Tales of seafaring
    BZOJ2286 [Sdoi2011消耗战
    BZOJ1370 [Baltic2003]Gang团伙
    BZOJ2530 [Poi2011]Party
  • 原文地址:https://www.cnblogs.com/xiaocongcong888/p/9736174.html
Copyright © 2020-2023  润新知