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