Repository: cryptokylin/CryptoKylin-Testnet Branch: master Commit: 50e39d92c39a Files: 18 Total size: 28.4 KB Directory structure: gitextract_nm_ef17x/ ├── .gitignore ├── README.md ├── README_CN.md ├── boot.md ├── config/ │ ├── api-config.ini │ ├── bp-config.ini │ └── peer-config.ini ├── docker/ │ ├── eos/ │ │ ├── Dockerfile │ │ └── build.sh │ └── eosmainnet/ │ ├── Dockerfile │ └── build.sh ├── eosio.x_contracts_update.md ├── fullnode/ │ ├── config/ │ │ ├── config.ini │ │ └── genesis.json │ ├── docker-compose-kylin-init.yaml │ ├── docker-compose-kylin.yaml │ └── run.sh └── genesis.json ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitignore ================================================ .idea *.log ================================================ FILE: README.md ================================================ # CryptoKylin-Testnet Welcome to the CryptoKylin-Testnet [点击查看中文](README_CN.md) ## Dependencies - [Docker](https://docs.docker.com) Docker 17.05 or higher is required - [docker-compose](https://docs.docker.com/compose/) version >= 1.10.0 ## Clone project ``` git clone git@github.com:cryptokylin/CryptoKylin-Testnet.git cd fullnode ``` ## Setup a fullnode in 5 seconds using the shell ``` ./run.sh ``` ## Setup a fullnode manually in 1 minute The first step, create the desired directory: ``` mkdir -p /data/eos/nodeos-data-volume/nodeos-data-kylin/data ``` The second step is to prepare the configuration file: ``` cp -r config /data/eos/nodeos-data-volume/nodeos-data-kylin ``` The third step, join the network: ``` docker-compose -f docker-compose-kylin-init.yaml up -d ``` ## Stop/Restart syncing To stop: ``` docker-compose -f docker-compose-kylin.yaml down ``` To restart: ``` docker-compose -f docker-compose-kylin.yaml down docker-compose -f docker-compose-kylin.yaml up -d ``` ## Chain info ``` { "chain_id": "5fff1dae8dc8e2fc4d5b23b2c7665c97f9e9d8edf2b6485a86ba311c25639191" } ``` ## P2P LIST ``` p2p-peer-address = kylinnet.eosstore.link:9876 p2p-peer-address = 119.254.15.40:9876 p2p-peer-address = 39.108.231.157:23225 p2p-peer-address = p2p.kylin.eoseco.com:10000 p2p-peer-address = p2p-kylin.eoslaomao.com:443 p2p-peer-address = p2p.kylin-testnet.eospacex.com:88 p2p-peer-address = peering-kylin.eosasia.one:80 p2p-peer-address = kylin.meet.one:9876 p2p-peer-address = peer.kylin.alohaeos.com:9876 p2p-peer-address = p2p.kylin.helloeos.com.cn:9876 p2p-peer-address = kylin-testnet.starteos.io:9876 p2p-peer-address = kylin-fn001.eossv.org:443 p2p-peer-address = kylin-fn001.eossv.org:443 p2p-peer-address = api-kylin.eoshenzhen.io:9876 p2p-peer-address = p2p.kylin.eosbeijing.one:8080 p2p-peer-address = testnet.zbeos.com:9876 ``` ## HTTP API LIST API nodes: ``` http://39.108.231.157:30065/v1/chain/get_info https://api.kylin-testnet.eospacex.com/v1/chain/get_info http://api.kylin.eoseco.com/v1/chain/get_info http://178.62.36.41:8888/v1/chain/get_info https://api.kylin.alohaeos.com/v1/chain/get_info http://api.kylin.helloeos.com.cn/v1/chain/get_info https://kylin.eoscanada.com/v1/chain/get_info http://api-kylin.starteos.io/v1/chain/get_info http://api.kylin.eosbeijing.one:8880/v1/chain/get_info http://kylin-testnet.jeda.one:8888/v1/chain/get_info http://kylin.meet.one:8888/v1/chain/get_info ``` API nodes support get actions ( filter-on=* ): ``` https://api-kylin.eoslaomao.com/v1/chain/get_info https://api-kylin.eosasia.one/v1/chain/get_info ``` ## Faucet Creating accounts on cryptokylin is pretty simple: #### Free Account Create account using: http://faucet-kylin.blockzone.net/create/new_account_name Example: ``` curl http://faucet-kylin.blockzone.net/create/111111111ooo ``` #### Get Free tokens Get free token with: http://faucet-kylin.blockzone.net/get_token/your_account_name. You can get 100 tokens each call and max 1000 tokens per day. Example: ``` curl http://faucet-kylin.blockzone.net/get_token/111111111ooo ``` ## Backup files (Not in maintenance) For those of you who want to sync fast to the latest block, you can use these backup files here: #### Docker version - https://storage.googleapis.com/eos-kylin-backup #### Non docker version - https://s3-ap-northeast-1.amazonaws.com/cryptokylin-eosstore/index.html ### How to use backup #### docker version - First get the back-up from the https://storage.googleapis.com/eos-kylin-backup ``` wget https://storage.googleapis.com/eos-kylin-backup/kylin-20181114060001.zip ``` - Decompress the package to the path which in your config,and modify name which in your config ``` tar -zxvf kylin-20181114060001.zip -C / cd /data/eos/nodeos-data-volume/ mv nodeos-data-eospace-kylinbackup2 nodeos-data-kylin ``` - Start docker ``` docker-compose -f docker-compose-kylin.yaml up -d ``` #### Non docker version - First get the latest back-up from the https://s3-ap-northeast-1.amazonaws.com/cryptokylin-eosstore/index.html - Decompress the package to the path which in your nodeos's config - Start nodeos - method of operation dails:https://github.com/zsq978663747/eos-doc/blob/master/eos_block_backup_cn.md ================================================ FILE: README_CN.md ================================================ # CryptoKylin-Testnet 欢迎来到 CryptoKylin-Testnet [View in English](README.md) ## 依赖 - [Docker](https://docs.docker.com) Docker版本 >= 17.05 - [docker-compose](https://docs.docker.com/compose/) 版本 >= 1.10.0 ## 克隆项目 ``` git clone git@github.com:cryptokylin/CryptoKylin-Testnet.git cd fullnode ``` ## 5秒之内搭建一个全节点 ``` ./run.sh ``` ## 1分钟内手动搭建全节点 第一步,创建所需要的目录: ``` mkdir -p /data/eos/nodeos-data-volume/nodeos-data-kylin/data ``` 第二步,准备配置文件: ``` cp -r config /data/eos/nodeos-data-volume/nodeos-data-kylin ``` 第三步,启动全节点 ``` docker-compose -f docker-compose-kylin-init.yaml up -d ``` ## 暂停/重启 同步 暂停: ``` docker-compose -f docker-compose-kylin.yaml down ``` 重启: ``` docker-compose -f docker-compose-kylin.yaml down docker-compose -f docker-compose-kylin.yaml up -d ``` ## 链信息 ``` { "chain_id": "5fff1dae8dc8e2fc4d5b23b2c7665c97f9e9d8edf2b6485a86ba311c25639191" } ``` ## P2P 节点列表 ``` p2p-peer-address = 13.125.53.113:9876 p2p-peer-address = 119.254.15.40:9876 p2p-peer-address = p2p.kylin.eoseco.com:10000 p2p-peer-address = p2p-kylin.eoslaomao.com:443 p2p-peer-address = p2p.kylin-testnet.eospacex.com:88 p2p-peer-address = peering-kylin.eosasia.one:80 p2p-peer-address = kylin.meet.one:9876 p2p-peer-address = peer.kylin.alohaeos.com:9876 p2p-peer-address = p2p.kylin.helloeos.com.cn:9876 p2p-peer-address = kylin-testnet.starteos.io:9876 p2p-peer-address = kylin-fn001.eossv.org:443 p2p-peer-address = p2p.kylin.eosbeijing.one:8080 p2p-peer-address = testnet.zbeos.com:9876 ``` ## HTTP API 节点列表 API nodes: ``` http://39.108.231.157:30065/v1/chain/get_info https://api.kylin-testnet.eospacex.com/v1/chain/get_info http://api.kylin.eoseco.com/v1/chain/get_info http://13.125.53.113:8888/v1/chain/get_info http://119.254.15.40:8888/v1/chain/get_info https://api.kylin.alohaeos.com/v1/chain/get_info http://api.kylin.helloeos.com.cn/v1/chain/get_info http://api-kylin.starteos.io/v1/chain/get_info http://kylin-fn001.eossv.org/v1/chain/get_info http://api-kylin.eoshenzhen.io:8890/v1/chain/get_info http://api.kylin.eosbeijing.one:8880/v1/chain/get_info http://testnet.zbeos.com/v1/chain/get_info ``` 支持 `get actions` ( filter-on=* ) 的API: ``` https://api-kylin.eoslaomao.com/v1/chain/get_info https://api-kylin.eosasia.one/v1/chain/get_info https://api-kylin.meet.one/v1/chain/get_info ``` ## 水龙头 在 `cryptokylin` 上创建账号非常简单: #### 免费账号 创建免费账号: http://faucet-kylin.blockzone.net/create/new_account_name 例子: ``` curl http://faucet-kylin.blockzone.net/create/111111111ooo ``` #### 获得免费Token 获得免费Token: http://faucet-kylin.blockzone.net/get_token/your_account_name. 每一次调用能获得100EOS, 每天最多获得1000个EOS. 例子: ``` curl http://faucet-kylin.blockzone.net/get_token/111111111ooo ``` ## 备份文件 (不再维护) 可以通过下列备份文件快速同步麒麟测试网节点: #### Docker 版本 - https://storage.googleapis.com/eos-kylin-backup #### 非 docker 版本 - https://s3-ap-northeast-1.amazonaws.com/cryptokylin-eosstore/index.html ### 如何使用备份 #### docker版本 - 首先通过网址获取到最新的备份数据,例如: ``` wget https://storage.googleapis.com/eos-kylin-backup/kylin-20181114060001.zip ``` - 在本地把数据解压到自己的配置文件中的路径下,并且修改自己配置文件中写的文件夹的名称,例如: ``` tar -zxvf kylin-20181114060001.zip -C / cd /data/eos/nodeos-data-volume/ mv nodeos-data-eospace-kylinbackup2 nodeos-data-kylin ``` - 启动docker ``` docker-compose -f docker-compose-kylin.yaml up -d ``` #### 非docker版本 - 首先访问网址,获取到最新的备份数据 - 把数据解压到自己的配置文件中的指定路径下 - 启动nodeos程序 - 详细操作:https://github.com/zsq978663747/eos-doc/blob/master/eos_block_backup_cn.md ================================================ FILE: boot.md ================================================ ### boot sequence ``` # step 1: prepare config.ini and genesis.json # step 2: run nodeos su eosio nodeos --config-dir /data/eos-config -d /data/eos-data --genesis-json /data/eos-config/genesis.json # step 3: prepare wallet cleos wallet create cleos wallet import # step 4: set contract eosio.bios CONTRACTS_FOLDER='/opt/EOS-Mainnet/eos/build/contracts' cleos set contract eosio ${CONTRACTS_FOLDER}/eosio.bios -p eosio # step 5: create system accounts for account in eosio.bpay eosio.msig eosio.names eosio.ram eosio.ramfee eosio.saving eosio.stake eosio.token eosio.vpay do echo -e "\n creating $account \n"; cleos create account eosio ${account} EOS7hHHDtnPRbhMmfHJHUEKQyiutKrt9wZPdy1JbaATVLyxpCkrop; sleep 1; done # step 6: set contract cleos set contract eosio.token ${CONTRACTS_FOLDER}/eosio.token -p eosio.token cleos set contract eosio.msig ${CONTRACTS_FOLDER}/eosio.msig -p eosio.msig # step 7: create and issue token cleos push action eosio.token create '["eosio", "10000000000.0000 EOS"]' -p eosio.token cleos push action eosio.token issue '["eosio", "1000000000.0000 EOS", "cryptokylin"]' -p eosio # setp 8: setting privileged account for eosio.msig cleos push action eosio setpriv '{"account": "eosio.msig", "is_priv": 1}' -p eosio # step 9: set contract eosio.system cleos set contract eosio ${CONTRACTS_FOLDER}/eosio.system -x 1000 -p eosio # step 10: create some account cleos system newaccount --stake-net "10.0000 EOS" --stake-cpu "10.0000 EOS" --buy-ram "10.0000 EOS" eosio eosecoeoseco EOS73Th1ph7AHJz93zEmbmqNnkVkNqSuy9e3sGQRaLwxUEHJQdmB3 EOS73Th1ph7AHJz93zEmbmqNnkVkNqSuy9e3sGQRaLwxUEHJQdmB3 cleos system newaccount --stake-net "10.0000 EOS" --stake-cpu "10.0000 EOS" --buy-ram "10.0000 EOS" eosio eosbixincool EOS89A2Zktdyb3iij4aejoWLwhHjWuZjsVBGqNCwybEcfV2F2pYpR EOS6eMWsyR9ZcrT9rpRd5dzkyWnNKzs3SxzvjjkaedREwcVf1dBbx cleos system newaccount --stake-net "10.0000 EOS" --stake-cpu "10.0000 EOS" --buy-ram "10.0000 EOS" eosio eospaceioeos EOS8LjRfkatmLxKdJiBXjyFAnFqws1gkjoWDv7xwf87WfGpBs7Z8Y EOS6vxCWyx3ryiFosCTQ6eWDdcEPvp6ebBi5CWnbz4y4ifR6GcMft cleos system newaccount --stake-net "10.0000 EOS" --stake-cpu "10.0000 EOS" --buy-ram "10.0000 EOS" eosio eosasia11111 EOS5a5qPLuRqJgbCv1xvLUpKst4NVnhWL3kLaPQ4MeBC1GVr2ikb8 EOS5a5qPLuRqJgbCv1xvLUpKst4NVnhWL3kLaPQ4MeBC1GVr2ikb8 cleos system newaccount --stake-net "10.0000 EOS" --stake-cpu "10.0000 EOS" --buy-ram "10.0000 EOS" eosio eosstorebest EOS5F3xZaNRhDLzKRGgu5npxKQdFNBTeoSVhdyNz8WFiVXAoCmTcW EOS6GkvvJNM43iN61a4qZjLtm41c6KSW3ggJYpt8Q7CWfCyqBZ7Je cleos system newaccount --stake-net "10.0000 EOS" --stake-cpu "10.0000 EOS" --buy-ram "10.0000 EOS" eosio eoslaomaocom EOS8hNCsEiEQzYiZY8uVxJiWGqD38VoDUNuVfS648spsftAJA87Z1 EOS8hNCsEiEQzYiZY8uVxJiWGqD38VoDUNuVfS648spsftAJA87Z1 cleos system newaccount --stake-net "10.0000 EOS" --stake-cpu "10.0000 EOS" --buy-ram "10.0000 EOS" eosio eoshuobipool EOS4xfwXh5DmXWdCJv3HFm7cnCYUGabE3itoabZBYwedNDKwA2YQU EOS4vRtWyVQezZG5tjXYNJigaaxx17ym5vR21cBG2mAuKJWBGHU1S # -- faucet accounts -- cleos system newaccount --stake-net "10.0000 EOS" --stake-cpu "10.0000 EOS" --buy-ram "10.0000 EOS" eosio eosfaucet111 EOS8CjwFmPtGzhZEST7NTSNfoAULHTVHfrBdVJQxeSD2b3XMFHbZs EOS8TRdivFvDSVZcVPHoyMPrSmn2BajKZYoAt9af37RcWDGkntz1c cleos system newaccount --stake-net "10.0000 EOS" --stake-cpu "10.0000 EOS" --buy-ram "10.0000 EOS" eosio eosio.faucet EOS6ZdSYBZtvZ9E3KKBbgMo75Tj787H6Cn5F5QvEGZ9A7GJzFkK6n EOS6fqxxdiuvRR8y6LdfAjKoPLVuVuHHz2wHoTqB3mVBhQQqgonef # step 11: transfer cleos transfer eosio eosecoeoseco "100000000.0000 EOS" cleos transfer eosio eosbixincool "100000000.0000 EOS" cleos transfer eosio eospaceioeos "100000000.0000 EOS" cleos transfer eosio eosasia11111 "100000000.0000 EOS" cleos transfer eosio eosstorebest "100000000.0000 EOS" cleos transfer eosio eoslaomaocom "100000000.0000 EOS" cleos transfer eosio eoshuobipool "100000000.0000 EOS" # step 12: transfer all eosio balance to faucet account and activate the network cleos transfer eosio eosfaucet111 "100000000.0000 EOS" cleos transfer eosio eosio.faucet "199999730.0000 EOS" ## check eosio balance cleos get currency balance eosio.token eosio # step last: resign all system account for account in eosio.bpay eosio.msig eosio.names eosio.ram eosio.ramfee eosio.saving eosio.stake eosio.token eosio.vpay do cleos push action eosio updateauth '{"account": "'$account'", "permission": "active", "parent": "owner", "auth":{"threshold": 1, "keys": [], "waits": [], "accounts": [{"weight": 1, "permission": {"actor": "eosio", "permission": active}}]}}' -p ${account}@active cleos push action eosio updateauth '{"account": "'$account'", "permission": "owner", "parent": "", "auth":{"threshold": 1, "keys": [], "waits": [], "accounts": [{"weight": 1, "permission": {"actor": "eosio", "permission": active}}]}}' -p ${account}@owner sleep 1; done ## check system accounts for account in eosio.bpay eosio.msig eosio.names eosio.ram eosio.ramfee eosio.saving eosio.stake eosio.token eosio.vpay do echo --- ${account} --- && cleos get account ${account} && sleep 1; done cleos push action eosio updateauth '{"account": "eosio", "permission": "active", "parent": "owner", "auth":{"threshold": 1, "keys": [], "waits": [], "accounts": [{"weight": 1, "permission": {"actor": "eosio.prods", "permission": active}}]}}' -p eosio@active cleos push action eosio updateauth '{"account": "eosio", "permission": "owner", "parent": "", "auth":{"threshold": 1, "keys": [], "waits": [], "accounts": [{"weight": 1, "permission": {"actor": "eosio.prods", "permission": active}}]}}' -p eosio@owner ## check eosio cleos get account eosio ``` ================================================ FILE: config/api-config.ini ================================================ ## CHANGE THESE p2p-server-address = p2p.kylin-testnet.eospacex.com:88 agent-name = "EOSpace" ## MAYBE CHANGE THESE http-server-address = 0.0.0.0:8888 p2p-listen-endpoint = 0.0.0.0:9876 ## USUALLY DONT CHANGE THESE blocks-dir = "blocks" abi-serializer-max-time-ms = 3000 wasm-runtime = wabt chain-state-db-size-mb = 65535 reversible-blocks-db-size-mb = 1024 contracts-console = false p2p-max-nodes-per-host = 1 allowed-connection = any max-clients = 100 network-version-match = 1 sync-fetch-span = 500 filter-on = * connection-cleanup-period = 30 max-implicit-request = 1500 http-validate-host = false access-control-allow-origin = * access-control-allow-headers = * access-control-allow-credentials = false verbose-http-errors = true plugin = eosio::chain_api_plugin plugin = eosio::history_plugin plugin = eosio::history_api_plugin ## BLACKLIST # actor-blacklist = ## PEERS p2p-peer-address = 13.125.53.113:9876 p2p-peer-address = 119.254.15.40:9876 p2p-peer-address = p2p.kylin.eoseco.com:10000 p2p-peer-address = p2p-kylin.eoslaomao.com:443 p2p-peer-address = p2p.kylin-testnet.eospacex.com:88 p2p-peer-address = kylin.fnp2p.eosbixin.com:443 p2p-peer-address = peering-kylin.eosasia.one:80 p2p-peer-address = kylin.meet.one:9876 p2p-peer-address = peer.kylin.alohaeos.com:9876 p2p-peer-address = p2p.kylin.helloeos.com.cn:9876 p2p-peer-address = kylin-testnet.starteos.io:9876 p2p-peer-address = kylin-fn001.eossv.org:443 p2p-peer-address = testnet.zbeos.com:9876 ================================================ FILE: config/bp-config.ini ================================================ ## CHANGE THESE p2p-server-address = agent-name = "EOSpace" ## UNCOMMENT AND CHANGE THESE ONLY IF YOU WANT TO PRODUCE BLOCKS signature-provider = EOS7TqVs7LpMzJwikiWkGTG9UGSwcQVhxP2ZKBM7FCbUwcrryNgHP=KEY: # goes here producer-name = eospaceioeos ## MAYBE CHANGE THESE http-server-address = 0.0.0.0:8888 p2p-listen-endpoint = 0.0.0.0:9876 ## USUALLY DONT CHANGE THESE blocks-dir = "blocks" abi-serializer-max-time-ms = 2000 wasm-runtime = wabt chain-state-db-size-mb = 65535 reversible-blocks-db-size-mb = 1024 contracts-console = false https-client-validate-peers = 1 p2p-max-nodes-per-host = 1 allowed-connection = any max-clients = 25 network-version-match = 0 sync-fetch-span = 500 http-validate-host = false ## eosio::producer_plugin enable-stale-production = true pause-on-startup = false max-transaction-time = 180 max-irreversible-block-age = -1 keosd-provider-timeout = 5 ## BLACKLIST # actor-blacklist = plugin = eosio::producer_plugin plugin = eosio::chain_api_plugin ## PEERS p2p-peer-address = 13.125.53.113:9876 p2p-peer-address = 119.254.15.40:9876 p2p-peer-address = p2p.kylin.eoseco.com:10000 p2p-peer-address = p2p-kylin.eoslaomao.com:443 p2p-peer-address = p2p.kylin-testnet.eospacex.com:88 p2p-peer-address = kylin.fnp2p.eosbixin.com:443 p2p-peer-address = peering-kylin.eosasia.one:80 p2p-peer-address = kylin.meet.one:9876 p2p-peer-address = peer.kylin.alohaeos.com:9876 p2p-peer-address = p2p.kylin.helloeos.com.cn:9876 p2p-peer-address = kylin-testnet.starteos.io:9876 p2p-peer-address = kylin-fn001.eossv.org:443 p2p-peer-address = testnet.zbeos.com:9876 ================================================ FILE: config/peer-config.ini ================================================ ## CHANGE THESE p2p-server-address = p2p.kylin-testnet.eospacex.com:88 agent-name = "EOSpace" ## MAYBE CHANGE THESE http-server-address = 0.0.0.0:8888 p2p-listen-endpoint = 0.0.0.0:9876 ## USUALLY DONT CHANGE THESE blocks-dir = "blocks" abi-serializer-max-time-ms = 3000 wasm-runtime = wabt chain-state-db-size-mb = 65535 reversible-blocks-db-size-mb = 1024 contracts-console = false p2p-max-nodes-per-host = 5 allowed-connection = any max-clients = 100 network-version-match = 1 sync-fetch-span = 500 connection-cleanup-period = 30 max-implicit-request = 1500 http-validate-host = false plugin = eosio::chain_api_plugin ## BLACKLIST # actor-blacklist = ## PEERS p2p-peer-address = 13.125.53.113:9876 p2p-peer-address = 119.254.15.40:9876 p2p-peer-address = p2p.kylin.eoseco.com:10000 p2p-peer-address = p2p-kylin.eoslaomao.com:443 p2p-peer-address = p2p.kylin-testnet.eospacex.com:88 p2p-peer-address = kylin.fnp2p.eosbixin.com:443 p2p-peer-address = peering-kylin.eosasia.one:80 p2p-peer-address = kylin.meet.one:9876 p2p-peer-address = peer.kylin.alohaeos.com:9876 p2p-peer-address = p2p.kylin.helloeos.com.cn:9876 p2p-peer-address = kylin-testnet.starteos.io:9876 p2p-peer-address = kylin-fn001.eossv.org:443 p2p-peer-address = testnet.zbeos.com:9876 p2p-peer-address = kylin.eosrio.io:39876 ================================================ FILE: docker/eos/Dockerfile ================================================ FROM eosio/builder as builder ARG branch=master ARG symbol=SYS RUN git clone -b $branch https://github.com/EOSIO/eos.git --recursive \ && cd eos && echo "$branch:$(git rev-parse HEAD)" > /etc/eosio-version \ && cmake -H. -B"/tmp/build" -GNinja -DCMAKE_BUILD_TYPE=Release -DWASM_ROOT=/opt/wasm -DCMAKE_CXX_COMPILER=clang++ \ -DCMAKE_C_COMPILER=clang -DCMAKE_INSTALL_PREFIX=/tmp/build -DBUILD_MONGO_DB_PLUGIN=true -DCORE_SYMBOL_NAME=$symbol \ && cmake --build /tmp/build --target install FROM ubuntu:18.04 RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y install openssl ca-certificates && rm -rf /var/lib/apt/lists/* COPY --from=builder /usr/local/lib/* /usr/local/lib/ COPY --from=builder /tmp/build/bin /opt/eosio/bin COPY --from=builder /tmp/build/contracts /contracts COPY --from=builder /eos/Docker/config.ini / COPY --from=builder /etc/eosio-version /etc COPY --from=builder /eos/Docker/nodeosd.sh /opt/eosio/bin/nodeosd.sh ENV EOSIO_ROOT=/opt/eosio RUN chmod +x /opt/eosio/bin/nodeosd.sh ENV LD_LIBRARY_PATH /usr/local/lib ENV PATH /opt/eosio/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin ================================================ FILE: docker/eos/build.sh ================================================ #!/bin/bash TAG=v1.6.3 BRANCH=v1.6.3 nohup docker build -t cryptokylin/eos:$TAG --build-arg branch=$BRANCH --build-arg symbol=EOS . > build.log & ================================================ FILE: docker/eosmainnet/Dockerfile ================================================ FROM eosio/builder as builder ARG branch=master ARG symbol=SYS RUN git clone -b $branch https://github.com/EOS-Mainnet/eos.git --recursive \ && cd eos && echo "$branch:$(git rev-parse HEAD)" > /etc/eosio-version \ && cmake -H. -B"/tmp/build" -GNinja -DCMAKE_BUILD_TYPE=Release -DWASM_ROOT=/opt/wasm -DCMAKE_CXX_COMPILER=clang++ \ -DCMAKE_C_COMPILER=clang -DCMAKE_INSTALL_PREFIX=/tmp/build -DSecp256k1_ROOT_DIR=/usr/local -DBUILD_MONGO_DB_PLUGIN=true -DCORE_SYMBOL_NAME=$symbol \ && cmake --build /tmp/build --target install && rm /tmp/build/bin/eosiocpp FROM ubuntu:18.04 RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y install openssl ca-certificates && rm -rf /var/lib/apt/lists/* COPY --from=builder /usr/local/lib/* /usr/local/lib/ COPY --from=builder /tmp/build/bin /opt/eosio/bin COPY --from=builder /tmp/build/contracts /contracts COPY --from=builder /eos/Docker/config.ini / COPY --from=builder /etc/eosio-version /etc COPY --from=builder /eos/Docker/nodeosd.sh /opt/eosio/bin/nodeosd.sh ENV EOSIO_ROOT=/opt/eosio RUN chmod +x /opt/eosio/bin/nodeosd.sh ENV LD_LIBRARY_PATH /usr/local/lib VOLUME /opt/eosio/bin/data-dir ENV PATH /opt/eosio/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin ================================================ FILE: docker/eosmainnet/build.sh ================================================ #!/bin/bash TAG=v1.1.6 BRANCH=mainnet-1.1.6 nohup docker build -t cryptokylin/eosmainnet:$TAG --build-arg branch=$BRANCH --build-arg symbol=EOS . > build.log & ================================================ FILE: eosio.x_contracts_update.md ================================================ ## How to update and approve eosio.contracts on Kylin Testnet In order to verify the [eosio.contracts]((https://github.com/EOSIO/eosio.contracts) )'s function and security before updating them on EOS mainnet, After a new version released, we need to deploy the new contracts to the Kylin testnet for testing. Note: Automatically generated ABI files are generally incomplete and require manual modification to work properly. You can refer to it [github.com/cryptokylin/eosio.contracts](https://github.com/cryptokylin/eosio.contracts)'s branch [v1.4.0-fixed](https://github.com/cryptokylin/eosio.contracts/tree/v1.4.0-fixed), which complements the missing content in the ABI files. ### Steps for propose update proposals ``` bash # step 1: build eosio.contracts, check generated *.abi files and add ricardians. git clone https://github.com/cryptokylin/eosio.contracts cd eosio.contracts && git checkout v1.4.0-fixed ./build.sh # step 2: generate transaction json files home_dir=`cd && pwd` tmp_dir="${home_dir}/tmp/eosio.contracts.v1.4.0" mkdir -p ${tmp_dir} && cd ${tmp_dir} repo_dir= # such as repo_dir='/Code/github.com/cryptokylin/eosio.contracts' build_dir=${repo_dir}/build alias cleos='cleos -u http://kylin.fn.eosbixin.com' for c in token msig system wrap; do \ cleos set contract eosio.${c} ${build_dir}/eosio.${c} -j -d -s > eosio.${c}.update_tx.json; done # step 3: modify these json files. expiration="2018-11-10T12:00:00" # you can set this time to three or ten days later as you want. for file in `ls`; do sed s/.*\"expiration\":.*/\ \ \"expiration\":\ \"${expiration}\",/g ${file} |\ sed s/.*\"ref_block_num\":.*/\ \ \"ref_block_num\":\ 0,/g |\ sed s/.*\"ref_block_prefix\":.*/\ \ \"ref_block_prefix\":\ 0,/g > ${file}.m ; done rm *.json # step 4: get requested_permissions json file. ## get top 21 bp names bps=`cleos system listproducers -l 21 | head -n 22 |tail -n 21 | cut -d ' ' -f1` ## generate permissions.json f=permissions.json && i=0 echo [ > ${f} for name in ${bps}; do \ i=$(($i+1)) && \ echo -n " {\"actor\": \"${name}\", \"permission\": \"active\"}" >> ${f} && \ if [ "$i" -ne "21" ]; then echo , >> ${f}; fi \ ;done echo >> ${f} && echo ] >> ${f} cat ${f} # step 5: create proposals cleos multisig propose_trx updatesysct1 permissions.json eosio.msig.update_tx.json.m eosstorebest cleos multisig propose_trx updatesysct2 permissions.json eosio.system.update_tx.json.m eosstorebest cleos multisig propose_trx updatesysct3 permissions.json eosio.token.update_tx.json.m eosstorebest cleos multisig propose_trx updatesysct4 permissions.json eosio.wrap.update_tx.json.m eosstorebest ``` ### Send the following message to top 21 bps. Hi Top 21 BPs, https://github.com/EOSIO/eosio.contracts released a new version of v1.4.0 . I compiled the contracts and proposed several update proposals. You can check the source code at https://github.com/cryptokylin/eosio.contracts/tree/v1.4.0-fixed , here I just complete these ABI files and without any other modification. You can use the following commands to see the contents of the proposals. alias cleos='cleos -u http://kylin.fn.eosbixin.com' cleos multisig review eosstorebest updatesysct1 cleos multisig review eosstorebest updatesysct2 cleos multisig review eosstorebest updatesysct3 cleos multisig review eosstorebest updatesysct4 You can check the approved status by following cmds. To get proposal updatesysct1's status: cleos get table eosio.msig eosstorebest approvals | jq '.rows[]|select(.proposal_name=="updatesysct1")' If you confirm it, you can pass the validation. I set "expiration": "2018-11-10T12:00:00" in every proposal, so if it's ok, approve it before that time please. cleos multisig approve eosstorebest updatesysct1 '{"your-bp-name":"active"}' -p your-bp-name and other proposals: updatesysct2 updatesysct3 updatesysct4; (the Kylin Testnet's current system contracts version is v1.3.1) ### Execute proposal when get enough approves. ``` bash cleos multisig exec eosstorebest updatesysct1 -p eosstorebest ## and other proposals: updatesysct2 updatesysct3 updatesysct4; ``` ================================================ FILE: fullnode/config/config.ini ================================================ ## MAYBE CHANGE THESE http-server-address = 0.0.0.0:8888 p2p-listen-endpoint = 0.0.0.0:9876 ## USUALLY DONT CHANGE THESE blocks-dir = "blocks" abi-serializer-max-time-ms = 3000 wasm-runtime = wabt chain-state-db-size-mb = 65535 reversible-blocks-db-size-mb = 1024 contracts-console = false p2p-max-nodes-per-host = 1 allowed-connection = any max-clients = 100 network-version-match = 1 sync-fetch-span = 500 filter-on = * connection-cleanup-period = 30 max-implicit-request = 1500 http-validate-host = false access-control-allow-origin = * access-control-allow-headers = * access-control-allow-credentials = false verbose-http-errors = true plugin = eosio::chain_api_plugin plugin = eosio::history_plugin plugin = eosio::history_api_plugin ## BLACKLIST # actor-blacklist = ## PEERS p2p-peer-address = kylinnet.eosstore.link:9876 p2p-peer-address = 119.254.15.40:9876 p2p-peer-address = 39.108.231.157:23225 p2p-peer-address = p2p.kylin.eoseco.com:10000 p2p-peer-address = p2p-kylin.eoslaomao.com:443 p2p-peer-address = p2p.kylin-testnet.eospacex.com:88 p2p-peer-address = kylin.fnp2p.eosbixin.com:443 p2p-peer-address = peering-kylin.eosasia.one:80 p2p-peer-address = kylin.meet.one:9876 p2p-peer-address = peer.kylin.alohaeos.com:9876 p2p-peer-address = p2p.kylin.helloeos.com.cn:9876 p2p-peer-address = kylin-testnet.starteos.io:9876 p2p-peer-address = kylin-fn001.eossv.org:443 p2p-peer-address = kylin-fn001.eossv.org:443 p2p-peer-address = api-kylin.eoshenzhen.io:9876 p2p-peer-address = p2p.kylin.eosbeijing.one:8080 p2p-peer-address = testnet.zbeos.com:9876 ================================================ FILE: fullnode/config/genesis.json ================================================ { "initial_timestamp": "2018-07-11T05:30:00.000", "initial_key": "EOS7hHHDtnPRbhMmfHJHUEKQyiutKrt9wZPdy1JbaATVLyxpCkrop", "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 } } ================================================ FILE: fullnode/docker-compose-kylin-init.yaml ================================================ version: "3" services: nodeosd: image: cryptokylin/eos:v1.4.4 command: /opt/eosio/bin/nodeos --data-dir=/data --genesis-json=/etc/nodeos/genesis.json --config-dir=/etc/nodeos --delete-all-blocks hostname: nodeosd ports: - 8890:8888 - 9878:9876 expose: - "8888" volumes: - /data/eos/nodeos-data-volume/nodeos-data-kylin/config:/etc/nodeos - /data/eos/nodeos-data-volume/nodeos-data-kylin/data:/data ================================================ FILE: fullnode/docker-compose-kylin.yaml ================================================ version: "3" services: nodeosd: image: cryptokylin/eos:v1.4.4 command: /opt/eosio/bin/nodeos --data-dir=/data --config-dir=/etc/nodeos hostname: nodeosd ports: - 8890:8888 - 9878:9876 expose: - "8888" volumes: - /data/eos/nodeos-data-volume/nodeos-data-kylin/config:/etc/nodeos - /data/eos/nodeos-data-volume/nodeos-data-kylin/data:/data ================================================ FILE: fullnode/run.sh ================================================ #!/bin/bash DATA_DIR=/data/eos/nodeos-data-volume/nodeos-data-kylin mkdir -p $DATA_DIR/data cp -r config $DATA_DIR docker-compose -f docker-compose-kylin-init.yaml up -d ================================================ FILE: genesis.json ================================================ { "initial_timestamp": "2018-07-11T05:30:00.000", "initial_key": "EOS7hHHDtnPRbhMmfHJHUEKQyiutKrt9wZPdy1JbaATVLyxpCkrop", "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 } }