源码

APP源码:https://download.csdn.net/download/yanning1314/14248817

区块浏览器源码:https://download.csdn.net/download/yanning1314/14159730

钱包APP

先看截图

区块浏览器

官网 http://120.53.106.253

浏览器地址 http://120.53.106.253:8001/#/

EOS公链搭建

一 .准备

1. eosio账户公钥写死在代码中, 在代码根目录 CMakeList.txt里面,找到 EOSIO_ROOT_KEY,改为自己创建的公钥。并把新的密钥对 要在 config.ini文件中保存,见文件中 “signature-provider = 。。。”。

2.编译,安装,参加本人另一篇EOS编译文章。

二 .配置文件

1.建议在 nodeos 程序运行目录创建 config文件夹,保存配置文件;同时创建 data文件夹 ,保存区块文件.

2.搭建4个独立IP 的 节点(同一局域网),命名为:eosio, node1,node2,node3。所有节点的 genesis.json文件一样,否则不是一个网络,不能通信。

 3.genesis.json 文件内容,如下:
{
  "initial_timestamp": "2018-06-08T08:08:08.888",
  "initial_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV",  #####必须是 eosio 节点 的 公钥
  "initial_configuration": {
    "max_block_net_usage": 1048576,
    "target_block_net_usage_pct": 1000,
    "max_transaction_net_usage": 524288,
    "base_per_transaction_net_usage": 12,
    "net_usage_leeway": 500,
    "context_free_discount_net_usage_num": 20,
    "context_free_discount_net_usage_den": 100,
    "max_block_cpu_usage": 200000,
    "target_block_cpu_usage_pct": 1000,
    "max_transaction_cpu_usage": 150000,
    "min_transaction_cpu_usage": 100,
    "max_transaction_lifetime": 3600,
    "deferred_trx_expiration_window": 600,
    "max_transaction_delay": 3888000,
    "max_inline_action_size": 4096,
    "max_inline_action_depth": 4,
    "max_authority_depth": 6
  }
} 

   4.eosio 节点的 config.ini文件

block-log-dir = "blocks"
shared-memory-size-mb = 1024
http-server-address = 127.0.0.1:8888
access-control-allow-credentials = false
p2p-listen-endpoint = 0.0.0.0:9876

p2p-peer-address = 192.168.8.109:9876
p2p-peer-address = 192.168.8.52:9876
p2p-peer-address = 192.168.8.216:9876

agent-name = "SQU chain"
allowed-connection = any
max-clients = 25
connection-cleanup-period = 30
network-version-match = 0
sync-fetch-span = 100
max-implicit-request = 1500
enable-stale-production = true  ## 只是eosio节点 为true
max-transaction-time = 1000
required-participation = 33
producer-name = eosio      ## 注意节点账户名称,下面是 账户的 keys
signature-provider =

EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV=KEY:5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3

wallet-dir = "."
unlock-timeout = 90000
plugin = eosio::chain_api_plugin
plugin = eosio::chain_plugin
plugin = eosio::producer_plugin
plugin = eosio::http_plugin
plugin = eosio::history_api_plugin

5.node1,node2,node3 节点的 config.ini 文件类似,只需修改备注的地方

block-log-dir = "blocks"
shared-memory-size-mb = 1024
http-server-address = 127.0.0.1:8888
access-control-allow-credentials = false
p2p-listen-endpoint = 0.0.0.0:9876

p2p-peer-address = 192.168.8.215:9876          ##其他节点的 p2p 地址及端口,不要填写本节点的IP!
p2p-peer-address = 192.168.8.216:9876
p2p-peer-address = 192.168.8.52:9876

agent-name = "SQU chain"
allowed-connection = any
max-clients = 25
connection-cleanup-period = 30
network-version-match = 0
sync-fetch-span = 100
max-implicit-request = 1500

max-transaction-time = 30
required-participation = 33
producer-name = node1             ## 设置本节点账户名称,下面是 该账户的 keys ,根据自己的去修改!!

signature-provider = EOS6AzQmSAXHH8Mn7pi6B7zZ9UcVfmS5tcVS681bjz5ZvkGPXzGto=KEY:5HxfD1WGTBeVpMvobBDvpd9qLGn8VhLds14GwRaK6zq51XgNvF9

txn-reference-block-lag = 0
wallet-dir = "."
unlock-timeout = 90000
plugin = eosio::chain_api_plugin
plugin = eosio::chain_plugin
plugin = eosio::producer_plugin
plugin = eosio::http_plugin
plugin = eosio::history_api_plugin

三 .创建与发行代币

    1.启动四个节点nodeos程序
    (把 config.ini, genesis.json文件放到 config 目录, 区块文件放在 data目录)
     命令如下:
     nodeos  --data-dir ./data --config-dir ./config  --genesis-json  ./config/genesis.json

2.在 eosio 节点上创建钱包 squwallet ,并导入eosio账户私钥
     cleos wallet import -n squwallet   --private-key  5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3

3.创建发布token的帐号eosio.token (需自己去创建 key,并把私钥导入到钱包)
    cleos create account eosio eosio.token  EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV    EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV

4.发布eosio.token合约 (在eosio.contracts 代码编译后的 build/下面执行)
    gavin@ubuntu:~/eosio.contracts/build$ pwd  (当前目录)
/home/gavin/eosio.contracts/build
gavin@ubuntu:~/eosio.contracts/build$ ls contracts   (子目录)
CMakeCache.txt  CMakeFiles  cmake_install.cmake  eosio.bios  eosio.msig  eosio.system  eosio.token  eosio.wrap  Makefile
gavin@ubuntu:~/eosio.contracts/build$ ls contracts/eosio.token/
CMakeFiles  cmake_install.cmake  eosio.token.abi  eosio.token.wasm  Makefile
gavin@ubuntu:~/eosio.contracts/build$

在build目录下执行 cleos set contract eosio.token ./contracts/eosio.token --abi eosio.token.abi -p :

gavin@ubuntu:~/eosio.contracts/build$ cleos set contract eosio.token ./contracts/eosio.token --abi eosio.token.abi -p eosio.token@active
Reading WASM from /home/gavin/eosio.contracts/build/contracts/eosio.token/eosio.token.wasm...
Publishing contract...
executed transaction: 7bd751e63adfbdb639023d63e3702830db4293b479b051bfc6ef8d8fc5ee1eb9  9512 bytes  1336 us
#         eosio <= eosio::setcode               {"account":"eosio.token","vmtype":0,"vmversion":0,"code":"0061736d0100000001b1011d60037f7e7f0060047f...
#         eosio <= eosio::setabi                {"account":"eosio.token","abi":"0e656f73696f3a3a6162692f312e310008076163636f756e7400010762616c616e63...
warning: transaction executed locally, but may not be confirmed by the network yet         ]
gavin@ubuntu:~/eosio.contracts/build$
gavin@ubuntu:~/eosio.contracts/build$

5.创建代币
    gavin@ubuntu:~$ cleos push action eosio.token create '[ "eosio", "1000000000.0000 SYS"]' -p eosio.token@active
executed transaction: 353ba8ee7deb942db70c3029ed464d40de3b75aa312de2c99ec9f3dfca8c5391  120 bytes  195 us
#   eosio.token <= eosio.token::create          {"issuer":"eosio","maximum_supply":"1000000000.0000 SYS"}
warning: transaction executed locally, but may not be confirmed by the network yet         ]
gavin@ubuntu:~$

6.发行代币

gavin@ubuntu:~$ cleos  push action eosio.token issue '["eosio","1000000000.0000 SYS","issue"]' -p eosio@active
executed transaction: f778aa8a2ee27a7a9e0bc53515e47cf6787149bd6dddef7947ffa0e0e7960269  128 bytes  202 us
#   eosio.token <= eosio.token::issue           {"to":"eosio","quantity":"1000000000.0000 SYS","memo":"issue"}
warning: transaction executed locally, but may not be confirmed by the network yet         ]
gavin@ubuntu:~$

用命令查看 eosio 账户代币:
gavin@ubuntu:~$ cleos get currency balance eosio.token eosio SYS
1000000000.0000 SYS
gavin@ubuntu:~$

 .发布 eosio.system合约

 1.创建下面系统账户(共用一套公钥,实际情况 最好使用不同key,并把key导入到钱包)
cleos create account eosio eosio.bpay EOS5jh1BaxfnQhYwJqg7P2CYpyNp2gw9mdctprVpnFCKUqBJU3zEt  EOS5jh1BaxfnQhYwJqg7P2CYpyNp2gw9mdctprVpnFCKUqBJU3zEt
cleos create account eosio eosio.msig EOS5jh1BaxfnQhYwJqg7P2CYpyNp2gw9mdctprVpnFCKUqBJU3zEt  EOS5jh1BaxfnQhYwJqg7P2CYpyNp2gw9mdctprVpnFCKUqBJU3zEt
cleos create account eosio eosio.name EOS5jh1BaxfnQhYwJqg7P2CYpyNp2gw9mdctprVpnFCKUqBJU3zEt  EOS5jh1BaxfnQhYwJqg7P2CYpyNp2gw9mdctprVpnFCKUqBJU3zEt
cleos create account eosio eosio.names EOS5jh1BaxfnQhYwJqg7P2CYpyNp2gw9mdctprVpnFCKUqBJU3zEt  EOS5jh1BaxfnQhYwJqg7P2CYpyNp2gw9mdctprVpnFCKUqBJU3zEt
cleos create account eosio eosio.ram EOS5jh1BaxfnQhYwJqg7P2CYpyNp2gw9mdctprVpnFCKUqBJU3zEt  EOS5jh1BaxfnQhYwJqg7P2CYpyNp2gw9mdctprVpnFCKUqBJU3zEt
cleos create account eosio eosio.ramfee EOS5jh1BaxfnQhYwJqg7P2CYpyNp2gw9mdctprVpnFCKUqBJU3zEt  EOS5jh1BaxfnQhYwJqg7P2CYpyNp2gw9mdctprVpnFCKUqBJU3zEt
cleos create account eosio eosio.saving EOS5jh1BaxfnQhYwJqg7P2CYpyNp2gw9mdctprVpnFCKUqBJU3zEt  EOS5jh1BaxfnQhYwJqg7P2CYpyNp2gw9mdctprVpnFCKUqBJU3zEt
cleos create account eosio eosio.stake EOS5jh1BaxfnQhYwJqg7P2CYpyNp2gw9mdctprVpnFCKUqBJU3zEt  EOS5jh1BaxfnQhYwJqg7P2CYpyNp2gw9mdctprVpnFCKUqBJU3zEt
cleos create account eosio eosio.upay EOS5jh1BaxfnQhYwJqg7P2CYpyNp2gw9mdctprVpnFCKUqBJU3zEt  EOS5jh1BaxfnQhYwJqg7P2CYpyNp2gw9mdctprVpnFCKUqBJU3zEt

2.设置eosio.msig合约 (同样在eosio.contracts /build目录下运行)

msig合约支持并简化了权限级别的定义和管理以及执行多重签名操作。
      cleos set contract eosio.msig  ./contracts/eosio.msig/

3.部署eosio.system合约(必须先执行上面的 “创建下面系统账户”)
    该合约为几乎所有基于令牌的操作行为提供了操作。在安装系统合同之前,操作是独立于会计完成的。
    一旦系统合同启用,行动现在对他们有一个经济因素。资源(cpu,网络,内存)必须付费。同样,必须支付新帐户。
    系统合同使得令牌能够被放置和不被冻结,被购买的资源,可能的生产者被注册并且随后被投票,生产者奖励被要求,被设置   的特权和限制等等。
    cleos set contract eosio ./contracts/eosio.system/

新版EOS system合约,还必须执行下面命令初始化!
gavin@ubuntu:~/eosio.contracts/build$ cleos push action eosio init '[0, "4,SYS"]' -p eosio@active
executed transaction: dc6e2008c21b3b6fdcb78fa236c3ff94e7dcf55723e625115ad1457799ebdb24  104 bytes  409 us
#         eosio <= eosio::init                  {"version":0,"core":"4,SYS"}
#   eosio.token <= eosio.token::open            {"owner":"eosio.rex","symbol":"4,SYS","ram_payer":"eosio"}
warning: transaction executed locally, but may not be confirmed by the network yet         ]
gavin@ubuntu:~/eosio.contracts/build$

4.在安装eosio.system合同后,我们希望尽快将eosio.msig设置为特权帐户,以便它可以代表eosio帐户进行授权。很快eosio将辞职,eosio.prods将接管。
  使eosio.msig成为一个特权帐户。我们使用以下方法使eosio.msig有特权。
   cleos  push action eosio setpriv '["eosio.msig", 1]' -p eosio@active

 .注册BP及投票

1.用下面这个命令创建投票账户:

部署了eosio.system合约之后,cleos create account这个命令就不能创建账户了。

为 node1,node2,node3 准备不同的 key, 并导入钱包。 然后创建各个出块节点的 账户:node1,node2,node3。

cleos system newaccount eosio node1 EOS6AzQmSAXHH8Mn7pi6B7zZ9UcVfmS5tcVS681bjz5ZvkGPXzGto EOS6AzQmSAXHH8Mn7pi6B7zZ9UcVfmS5tcVS681bjz5ZvkGPXzGto --stake-net '50.00 SWC' --stake-cpu '50.00 SWC' --buy-ram-kbytes 8
    cleos system newaccount eosio node2 EOS5VgmxPRhvsTChoxc9b1NT6zFNhLVLfPpGcjWJUvmoke8dMVeLh EOS5VgmxPRhvsTChoxc9b1NT6zFNhLVLfPpGcjWJUvmoke8dMVeLh  --stake-net '50.00 SWC' --stake-cpu '50.00 SWC' --buy-ram-kbytes 8
    cleos system newaccount eosio node3 EOS7fEc1C6A8QHrK6kjFFFUmGrAmQoyivbrYaAdspKzA6io1gi5ax EOS7fEc1C6A8QHrK6kjFFFUmGrAmQoyivbrYaAdspKzA6io1gi5ax  --stake-net '50.00 SWC' --stake-cpu '50.00 SWC' --buy-ram-kbytes 8

2.将所有需要出块的节点(配置文件中 producer-name = nodex)注册成bp
    cleos  system regproducer node1 EOS6AzQmSAXHH8Mn7pi6B7zZ9UcVfmS5tcVS681bjz5ZvkGPXzGto http://http-server-address:8888
    cleos  system regproducer node2 EOS5VgmxPRhvsTChoxc9b1NT6zFNhLVLfPpGcjWJUvmoke8dMVeLh  http://http-server-address:8888
    cleos  system regproducer node3 EOS7fEc1C6A8QHrK6kjFFFUmGrAmQoyivbrYaAdspKzA6io1gi5ax  http://http-server-address:8888

3.给创建的账户转账
    cleos  push action eosio.token transfer '["eosio", "node1","100000000.0000 SYS","vote"]' -p eosio
    cleos  push action eosio.token transfer '["eosio", "node2","100000000.0000  SYS","vote"]' -p eosio
    cleos  push action eosio.token transfer '["eosio", "node3","100000000.0000 SYS","vote"]' -p eosio

4.锁定代币
    cleos system delegatebw node1 node1 '25000000.0000 SYS' '25000000.0000 SYS'
    cleos system delegatebw node2 node2 '25000000.0000 SYS' '25000000.0000 SYS'
    cleos system delegatebw node3  node3  '25000000.0000 SYS' '25000000.0000 SYS'

5.给出块节点投票

给 节点投票如下
    cleos system voteproducer prods  node1 node1 node2 node3
   cleos system voteproducer prods  node2 node1 node2 node3

 cleos system voteproducer prods  node3  node1 node2 node3   

注意 :发行的tonken总量为10亿,按照要求需要至少15%的投票主网才算成功,也即1.5亿的token投票,才能轮流出块,否则还是eosio节点继续出块。

投票后,过一段时间,可以看到 节点node1 node2 node3 轮流出块。eosio节点将停止出块, 不能再给 eosio节点投票出块, eosio节点在此完成使命!

区块链+公链+区块浏览器+钱包APP相关推荐

  1. Go语言,区块链公链,区块链钱包和区块链浏览器技术培训

    为了让广大区块链技术爱好者更好地学习区块链技术,木姜子科技和问我学院联合推出区块链技术培训课程,为适应广大学员的的技术基础情况,我们将课程分为6个阶段.您可以参加其中任何一个阶段的学习,也可参与所有课 ...

  2. 6 个重要模块,带你编写一个基于Golang的区块链公链demo!| 博文精选

    作者 | 肉山大魔王iii 责编 | Carol 出品 | 区块链大本营(blockchain_camp) 好久没和大家一起做实践的环节了,不知道各位是否也手痒痒了呢? 今天给大家带来的是基于 Gol ...

  3. 基于golang编写的区块链公链demo

    源码地址:https://github.com/corgi-kx/blockchain_golang.git     本程序是模仿比特币的功能所编写的区块链公链demo,主要应用到了密码学,共识算法, ...

  4. ​区块链公链“三元悖论”专题系列之去中心化(Decentralization)

    区块链作为系统去中心化的一种工具,所追求的并不一定是系统的"绝对"去中心化,而是相对于中心化来说,去中心化的程度. 在上一期的内容中,我们提到了区块链公链"三元悖论&qu ...

  5. 区块链公链“三元悖论”专题之可扩展性(Scalability)

    随着BTC系统的问世,区块链技术在这10多年的时间里被越来越多的人所认知,区块链构筑了数字经济时代的价值网络基础.而区块链公链背后的经济模式.共识机制.密码学等技术问题中,一直存在着一个有着持续热度的 ...

  6. 区块链公链开发 区块链一条公链开发费用

    公链就是指所有人都可以载入的.所有人都能推送买卖且交易能得到合理确定的.所有人都能参加在其中的共识全过程的区块链技术.公链采用了采取劳动量证实体制(POW).利益证实体制(POS).股权授权证明体制( ...

  7. 区块链公链DApp应用落地数据分析报告(二)

    在上一篇区块链公链DApp应用落地数据分析报告(一)中,我们对公链DApp应用布局的整体行业情况进行了大致的分析,从宏观上衡量,DApp总体类型单一,活跃用户主要集中于抽奖类和高风险类的菠菜项目,一方 ...

  8. 【转】区块链公链的 3 大性能难点、5 大体验障碍

    公链作为区块链世界的基础设施中的基石,极大地影响着上层应用的效率.成本以及用户体验.如果从比特币开始算起,公链一路走来已经 10 年了,但至今为止还远未到技术收敛的阶段.在这第 11 个年头,我细数一 ...

  9. 区块链 java 写入公链_2019公链项目实战 区块链公链项目实战 golang公链项目实战(视频+源码)...

    任务1:001 – 内容介绍.mp4 任务2:002 -Block结构.mp4 任务3:003 – 根据区块数据生成区块HASH.mp4 任务4:004 – CreateGenesisBlock.mp ...

最新文章

  1. 作为一枚第二天上班的小小.net程序员(技术宅的那种)很迷茫哦,第一个随笔
  2. 合理持仓 静待市场方向选择
  3. freeswitch呼叫流程分析
  4. rhel6.2 yum
  5. 自从我上了数据结构课之后……
  6. 电脑环境变量设置 java_如何设置自己电脑的系统环境变量?
  7. 国际空间站20年花掉超千亿美金,一些人开始觉得它“没啥用”了
  8. splite和map的结合使用
  9. 通讯框架 t-io 学习——给初学者的Demo:ShowCase设计分析
  10. Ayla 物联网平台全面支持主流智能语音系统
  11. Flink 实战:如何解决生产环境中的技术难题?
  12. 高通WLAN驱动分析
  13. 24-思科防火墙:ASA透明防火墙实验
  14. 并发并行、串行并行、串口并口的区别
  15. 【loj2567】【APIO2016】划艇
  16. 囚徒困境、智猪博弈、纳什均衡与一致预期(博弈论入门学习笔记二)
  17. flexbox_Flexbox对准综合指南
  18. 说说C/C++编译的那些事儿
  19. 如何用PDF编辑器更改和隐藏PDF批注
  20. c语言中整除和模除的优先级,整除运算与取模运算

热门文章

  1. 《Charles配置教程之Mac》
  2. Codeforces-868C - Qualification Rounds - 思维
  3. 文档数据防泄密需求分析
  4. 维基百科反对法国将被遗忘权全球化
  5. 日常水文章之Linux+arm+阿里IOT sdk+Cmake
  6. 绘图神器draw.io(写文必备)
  7. 服务器hdmi如何连接显示器,容易被忽略的HDMI连接显示器的一个重要设置
  8. matlab拟合多自变量函数,多个自变量的函数拟合问题
  9. 跟开涛学SpringMVC...
  10. LaTeX升级打怪路之自定义指令篇1