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 <eosio-private-key>
# 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 = <CENSORED>
agent-name = "EOSpace"
## UNCOMMENT AND CHANGE THESE ONLY IF YOU WANT TO PRODUCE BLOCKS
signature-provider = EOS7TqVs7LpMzJwikiWkGTG9UGSwcQVhxP2ZKBM7FCbUwcrryNgHP=KEY:<CENSORED> #<priv-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=<your eosio.contracts repo absolute directory> # 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
}
}
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
Condensed preview — 18 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (32K chars).
[
{
"path": ".gitignore",
"chars": 11,
"preview": ".idea\n*.log"
},
{
"path": "README.md",
"chars": 4255,
"preview": "# CryptoKylin-Testnet\n\nWelcome to the CryptoKylin-Testnet\n\n[点击查看中文](README_CN.md)\n\n## Dependencies\n\n- [Docker](https://d"
},
{
"path": "README_CN.md",
"chars": 3448,
"preview": "# CryptoKylin-Testnet\n\n欢迎来到 CryptoKylin-Testnet\n\n[View in English](README.md)\n\n## 依赖\n\n- [Docker](https://docs.docker.com"
},
{
"path": "boot.md",
"chars": 5698,
"preview": "\n### boot sequence\n\n```\n# step 1: prepare config.ini and genesis.json\n\n# step 2: run nodeos\nsu eosio\nnodeos --config-dir"
},
{
"path": "config/api-config.ini",
"chars": 1475,
"preview": "## CHANGE THESE\np2p-server-address = p2p.kylin-testnet.eospacex.com:88\nagent-name = \"EOSpace\"\n\n## MAYBE CHANGE THESE\nhtt"
},
{
"path": "config/bp-config.ini",
"chars": 1617,
"preview": "## CHANGE THESE\np2p-server-address = <CENSORED>\nagent-name = \"EOSpace\"\n\n## UNCOMMENT AND CHANGE THESE ONLY IF YOU WANT T"
},
{
"path": "config/peer-config.ini",
"chars": 1302,
"preview": "## CHANGE THESE\np2p-server-address = p2p.kylin-testnet.eospacex.com:88\nagent-name = \"EOSpace\"\n\n## MAYBE CHANGE THESE\nhtt"
},
{
"path": "docker/eos/Dockerfile",
"chars": 1151,
"preview": "FROM eosio/builder as builder\nARG branch=master\nARG symbol=SYS\n\nRUN git clone -b $branch https://github.com/EOSIO/eos.gi"
},
{
"path": "docker/eos/build.sh",
"chars": 145,
"preview": "#!/bin/bash\nTAG=v1.6.3\nBRANCH=v1.6.3\nnohup docker build -t cryptokylin/eos:$TAG --build-arg branch=$BRANCH --build-arg s"
},
{
"path": "docker/eosmainnet/Dockerfile",
"chars": 1251,
"preview": "FROM eosio/builder as builder\nARG branch=master\nARG symbol=SYS\n\nRUN git clone -b $branch https://github.com/EOS-Mainnet/"
},
{
"path": "docker/eosmainnet/build.sh",
"chars": 159,
"preview": "#!/bin/bash\nTAG=v1.1.6\nBRANCH=mainnet-1.1.6\nnohup docker build -t cryptokylin/eosmainnet:$TAG --build-arg branch=$BRANCH"
},
{
"path": "eosio.x_contracts_update.md",
"chars": 4358,
"preview": "\n## How to update and approve eosio.contracts on Kylin Testnet \nIn order to verify the [eosio.contracts]((https://githu"
},
{
"path": "fullnode/config/config.ini",
"chars": 1571,
"preview": "## MAYBE CHANGE THESE\nhttp-server-address = 0.0.0.0:8888\np2p-listen-endpoint = 0.0.0.0:9876\n\n## USUALLY DONT CHANGE THES"
},
{
"path": "fullnode/config/genesis.json",
"chars": 815,
"preview": "{\n \"initial_timestamp\": \"2018-07-11T05:30:00.000\",\n \"initial_key\": \"EOS7hHHDtnPRbhMmfHJHUEKQyiutKrt9wZPdy1JbaATVLyxpCk"
},
{
"path": "fullnode/docker-compose-kylin-init.yaml",
"chars": 454,
"preview": "version: \"3\"\n\nservices:\n nodeosd:\n image: cryptokylin/eos:v1.4.4\n command: /opt/eosio/bin/nodeos --data-dir=/data"
},
{
"path": "fullnode/docker-compose-kylin.yaml",
"chars": 394,
"preview": "version: \"3\"\n\nservices:\n nodeosd:\n image: cryptokylin/eos:v1.4.4\n command: /opt/eosio/bin/nodeos --data-dir=/data"
},
{
"path": "fullnode/run.sh",
"chars": 171,
"preview": "#!/bin/bash\n\nDATA_DIR=/data/eos/nodeos-data-volume/nodeos-data-kylin\nmkdir -p $DATA_DIR/data\ncp -r config $DATA_DIR\n\ndoc"
},
{
"path": "genesis.json",
"chars": 815,
"preview": "{\n \"initial_timestamp\": \"2018-07-11T05:30:00.000\",\n \"initial_key\": \"EOS7hHHDtnPRbhMmfHJHUEKQyiutKrt9wZPdy1JbaATVLyxpCk"
}
]
About this extraction
This page contains the full source code of the cryptokylin/CryptoKylin-Testnet GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 18 files (28.4 KB), approximately 10.5k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.