eos私有链搭建

源码下载

https://github.com/EOSIO/eos

源码改动

root@ubuntu:/mnt/hgfs/yejn/eos/eos/libraries/chain/include/eosio/chain# vim config.hpp

const static int block_interval_ms = 500;  修改出块时间

const static uint32_t default_target_block_net_usage_pct = 10 * percent_1; /// we target 1000 TPS

vim producer_plugin/producer_plugin.cpp 打印

if (head_block_age > fc::seconds(5))    5改成25 

EOS_ASSERT( block->timestamp < (fc::time_point::now() + fc::seconds(7)), block_from_the_future, "received a block from the future, ignoring it" );    7改成27

简介

    编译源码,搭建自己的私有链;部署4个节点,eosio,inita,initb,initc;

    eosio:第一个节点,生产创世块,部署系统账户合约,发布系统代币,创建并投票其他超级节点。

    inita,initb,initc:超级节点,投票结束后,轮流出块。

提前准备

cleos create key --to-console  很多配置文件需要用到密钥对,用此命令创建即可。

获取密钥对,配置genesis.json 和config.ini文件

为每个节点创建钱包,并且记住密码 本文钱包名称为eosio.wallet  inita.wallet  inib.wallet  initc.wallet

记得把对应的私钥导入钱包,我已经在脚本导入各自的私钥

创建钱包命令 cleos wallet create -n eosio.wallet --to-console

文件说明

/root/eosio/data/   数据目录。

/root/eosio/config/ 配置文件目录。

/root/eosio/config/genesis.json 创世文件,所有节点保存一致。https://github.com/EOSIO/eos/blob/master/tutorials/bios-boot-tutorial/genesis.json

/root/eosio/config/config.ini   配置文件,配置本节点账户信息,后面有详细说明。https://github.com/EOSIO/eos/blob/master/Docker/config.ini

genesis.json    所有节点,创世文件都一样

"initial_timestamp": "2018-12-13T02:02:13.066",    如果不能出块,可以先运行一次eosio节点,再回填

"initial_key": "EOS5xXJ8LkHDhJWHC5HKz8y9nhq5UaZgxzDMdGbiufrrJXwcCHzH8",   创世区块节点的公钥,必须和源码里的地址一致

"initial_chain_id": "0000000000000000000345000000000000000000000000000000000000000000"    随意填写

config.ini

#blocks-dir = "blocks"   区块目录,建议屏蔽,自己指定

http-server-address = 0.0.0.0:8888   http服务器本地监听

p2p-server-address = 192.168.1.132:9898   配置本地为p2p服务器

p2p-listen-endpoint = 0.0.0.0:9898    本地节点监听

p2p-peer-address = 192.168.1.132:9898  其他超级节点,可以配置多个   

agent-name = "EOS Test Agent"  名称,可以随意修改

allowed-connection = any   允许任意节点连接

enable-stale-production = true    第一节点配置为true,允许直接出块,其他超级节点配置为false

max-transaction-time = 1000   防止部署合约失败,此配置设置为1000

producer-name = eosio   本节点的账户名称,eosio为创世节点名称,后面几个节点名称分别为inita,initb,initc由自己设定,这些账户在下面脚本中创建

signature-provider = EOS5xXJ8LkHDhJWHC5HKz8y9nhq5UaZgxzDMdGbiufrrJXwcCHzH8=KEY:5KMmKcSh4cNWLvASoKqVzoKgC8Gn953byfZnzrVS2XeXirRrVWm   节点密钥对,eosio节点配置为genesis.json对应公钥即可

编译源码

git clone https://github.com/EOSIO/eos.git

cd eos

git submodule update --init --recursive    更新到最新

获取密钥对,l osio账户公钥写死在代码中, 在代码根目录 CMakeList.txt里面,

找到 EOSIO_ROOT_KEY,改为自己创建的公钥。并把新的密钥对 要在 config.ini文件中保存,见文件中 “signature-provider = 。。。”。

如果内存低于7G,需要修改配置

vim scripts/eosio_build_ubuntu.sh

-      if [ "${MEM_MEG}" -lt 7000 ]; then  如果你的物理内存是4G  ,可以把7000改成3000

如果磁盘过低,也需要修改磁盘配置

启动步骤

如果配置文件和私钥和我的一样,可以使用以下脚本自动执行,但是节点ip端口需要自己配置

eosio config.ini

producer-name = eosio

signature-provider = EOS5xXJ8LkHDhJWHC5HKz8y9nhq5UaZgxzDMdGbiufrrJXwcCHzH8=KEY:5KMmKcSh4cNWLvASoKqVzoKgC8Gn953byfZnzrVS2XeXirRrVWm

inita config.ini

producer-name = inita

signature-provider = EOS5VJv4YxPkv9asb5BfSHoDKSVnbuKfay3cNy2kcciELsCdDeqYB=KEY:5K5kgoqiTgYbPv5LUxhRrXodiZeJJPxdxSirVyzpPGHhw7qRvwt

initb config.ini

producer-name = initb

signature-provider = EOS7P4K4wsKaDAkES6VSyFb6tAMRE5afkniB9jE4Sq9tqTy6yddHb=KEY:5HqinXiSMZrNKrEkPuHbkvNDe5vPYDwoNeqmdLtB7yyR7aWpZkT

initc config.ini

producer-name = initc

signature-provider = EOS534ZY8Qk6HCAKubu2prUGxbnsq7NqVq6gK8GWnbUh74w6fD7pG=KEY:5JrmJmyPWPbEG5Tr9La1vzBKYkZfxDCdpwwHk13hBEGKzuixNEv


启动顺序:

eosio节点  sh start.sh    sh init.sh

inita节点    sh start.sh    sh init.sh

initb节点  sh start.sh    sh init.sh

initc节点  sh start.sh    sh init.sh

inita节点 sh vote.sh

以下为脚本说明

root@ubuntu:~/eosio# cat start.sh

nodeos  --data-dir ./data --config-dir ./config  --genesis-json  ./config/genesis.json

root@ubuntu:~/eosio# cat init.sh

#创建10对密钥 cleos create key --to-console

#创建钱包 cleos wallet create -n eosio.wallet --to-console  密钥未:"PW5KJ9Jsw4v9qZz4LbD68YUr922Ro9wT1YQdj7MUDbEUr9nDPaptt"  要记住钱包密码

#解锁钱包

echo "wallet unlock ..."

cleos wallet unlock -n eosio.wallet --password PW5KJ9Jsw4v9qZz4LbD68YUr922Ro9wT1YQdj7MUDbEUr9nDPaptt

#导入私钥

echo "wallet import ..."

cleos wallet import -n eosio.wallet --private-key 5JzEdUHZ57jPdTNPpAANnzLQpBf6cv26qV3SJe66QreD4GxEKfD

cleos wallet import -n eosio.wallet --private-key 5KDj65fFcTuQTDDrFomyWb19QoSjEaJJjrJdswmz4VLZkai8ZuT

cleos wallet import -n eosio.wallet --private-key 5JWVi9KdZ273tFyNFxiogUnKMnncxaFdMcYTyb3FFaQEYpMGwbV

cleos wallet import -n eosio.wallet --private-key 5Hpoeryo4brkpBc5utR1bdTubLBhANreEDbXQiDsJaBhcPPuMzV

cleos wallet import -n eosio.wallet --private-key 5J4hmSkbGPHW6CK9i3Y8pb7tzxvoM19T2g5fdNtY7TdpHS4yXX4

cleos wallet import -n eosio.wallet --private-key 5HsEdJM6meYM2guGJrSDkMGLfJcCyEvBseuqChNfGepcFncZWKQ

cleos wallet import -n eosio.wallet --private-key 5KPhYWxhicE8QjsumzHcqpw29B1LchjDHWUZPP9WLiHG94hJBDp

cleos wallet import -n eosio.wallet --private-key 5HqyxVv5tJ2Kjug6owA1CwrhDxMSwNVF3kEh7FHUzfSfEWBRygK

cleos wallet import -n eosio.wallet --private-key 5JbE3wT7o8Dj8crE8gL9eCE7XzXdNeV5NpLba1UjQhmv6gY5btv

cleos wallet import -n eosio.wallet --private-key 5Jdvw42rZg2JTdMxm2ZFATKuw9cq26LYn7Ek2aGywkuW99ZSxQN

cleos wallet import -n eosio.wallet --private-key 5KaJVpBPA89THFz3cpyxGRVgUadf31BdLwWVVrPYtah2z5PoP8c

cleos wallet import -n eosio.wallet --private-key 5JsNaoqmkuMWz6KPqNJkBnAw5ZdtW5iTdzzdgbn3Z8B72Gne3ML

cleos wallet import -n eosio.wallet --private-key 5JSEBVXW6wHX87p8BYbAJDpH7gXJ4C2AXMyXUyPXhCBkTDeVwi6

cleos wallet import -n eosio.wallet --private-key 5Kk5vAvANhp4QWghAQfeos5qoB7GHwxfq8iTii15UxHzCjiZMcz

cleos wallet import -n eosio.wallet --private-key 5JL9bpLQ74VvoxqRGHXP9TRQpJ3TutAR4jxJq8vQJTbEkQ75Zps

cleos wallet import -n eosio.wallet --private-key 5JKkLotKioZWb2vLYxaWjcQZRGYggWCFJbPjP47oeHcYztoATFc

cleos wallet import -n eosio.wallet --private-key 5HuMZmdxEX8Gokwsp6pYEzfaxyVgaZZJcw4zmSvCHYAXZ3vGtFU

cleos wallet import -n eosio.wallet --private-key 5JZu7FKANH5BJKTzzEMKYRUPpFfnpQRQDZpGWJtmapyXguEGRCo

cleos wallet import -n eosio.wallet --private-key 5JL2fQo4eZKJrJCis791yCr2gvLzhJbw3kfD7iJSD1p6zG25sHj

cleos wallet import -n eosio.wallet --private-key 5KTsJSfMCtPjKw4J8fL2xYV3eP5eL6Hgz4h5YoQTfrkg2zuiVTU

cleos wallet import -n eosio.wallet --private-key 5KMwpdSHUAZT3MnwHKeH3fNHua8VokgWjgiincg6ixdnpLyXWW5

cleos wallet import -n eosio.wallet --private-key 5Jhs8DJzEXm9YkFYWhU6SkthLNiYsv1A3RWLJnu5XMF32fRVuAP

#创建系统代币

echo "create eosio.token ..."

sleep 2

cleos create account eosio eosio.token EOS52VT7jeKKP71RWaEcLEhaoSfT86tnVYkrRERXAAuqCZmNjfJke EOS6mnRRwZ26qUe6SbCtJs6ch6aJTvY8X26vKypP4qkHcDmP5BjYU

sleep 2

cleos set contract eosio.token /mnt/hgfs/yejn/eos/eos/build/contracts/eosio.token/

sleep 2

cleos  push action eosio.token create '["eosio","1000000000.0000 SYS",0,0,0]' -p eosio.token

sleep 2

cleos  push action eosio.token issue '["eosio","1000000000.0000 SYS","issue"]' -p eosio

#创建9个系统账户

echo "create 9 eosio..."

cleos create account eosio eosio.bpay EOS8PMqhqJVm9G3nqYiNtYsP3x2Kvx955Yaz3idrhe5mSVVE6WAcy EOS5H7z2jKMmLbk9Q1LGLivn88PHXBGEpw6a3m9VVeZa15sW8Aanp

cleos create account eosio eosio.msig EOS6UZGR6MYYbMtpsPuF586XGnvbnUnLTrmFZrsacBVMNTTXf3DBh EOS8JBkp1oRqmbGBFs1wVUJUizGrWP93Cceo5aLmCpUvdqH7aXMmv

cleos create account eosio eosio.name EOS8G79TGTBpDPE5ZNbQLvRQJzLcXFSb4991aw8UJTEjFRTWfecry EOS59dYuDA4KiyecJ5eBNeq43X7GmXKSuJuZtDHgRDhG5y6Nu9Evb

cleos create account eosio eosio.names EOS7TfjDo7fTi5TLwWhzvKJjRwoSo8CYuj9mi8YwmFoDLBE5GHYs7 EOS5PZKeR3sGhyimNiXaRcn1xY9SzE3br78E8fz1uARcmvWoWvWry

cleos create account eosio eosio.ram EOS7UpH4rB1mkdZP43B3wHxKyrcQfB1Q674yhcTT1XJ3peyw7kH3i EOS5UgoMbihFgJ8RJyGEJhjm8gvZrH1uuvGWmyEXZWEwmt1VENC1e

cleos create account eosio eosio.ramfee EOS71wtJJMLfm5hnxTK3KJTSAZfrCHtk1awCgXxdGjL6ethSrHVrx EOS61fbgGb1nacyGNUUUkH8QBszNNRpPJoNhANdK74o5r5Uy9Q89M

cleos create account eosio eosio.saving EOS7ThT49aqseDtwjaJrTXbcsLn7Cmv2vXCzLKF65yaoDxjHSd5Jq EOS4ycHTjez57nhEa6Rg2TgD2gJLjKbXs2mVhuR1dEYCY8VoevF2D

cleos create account eosio eosio.stake EOS6BEiHYDUQeu3sGcqnYPajHQZRR6pjyyzoq8puHt32eJYfpCNcr EOS7sCv7XwXTGpYiat3TUWSk6cb66xfi1CcGhMrBsPQGraXgW3UEj

cleos create account eosio eosio.upay EOS5YQE9AEJXVRaddFrS1GBFEUeNStGoHGKnTQmyxaHSgVmav16J1 EOS7PsM6TqNER2QiRHsBnCHC3QS4uWCkjCicoatHvZzgoUGVZ7srN

#创建合约

echo "set contract ..."

sleep 6

cleos set contract eosio.msig  /mnt/hgfs/yejn/eos/eos/build/contracts/eosio.msig/

sleep 6

cleos set contract eosio /mnt/hgfs/yejn/eos/eos/build/contracts/eosio.system/

sleep 6

cleos  push action eosio setpriv '["eosio.msig", 1]' -p eosio@active

#创建3个超级节点账户

echo "new inita initb initc ..."

sleep 4

cleos system newaccount eosio inita EOS5VJv4YxPkv9asb5BfSHoDKSVnbuKfay3cNy2kcciELsCdDeqYB EOS6DyXgyTCTydr3GMxg34w7vmCErcWLjzYtvCeNFUyZR9YXCf1Gv --stake-net '50.00 SYS' --stake-cpu '50.00 SYS' --buy-ram-kbytes 8

cleos system newaccount eosio initb EOS7P4K4wsKaDAkES6VSyFb6tAMRE5afkniB9jE4Sq9tqTy6yddHb EOS8N3kNs4eUrvFAnKCkjpzL4aou4mmcxJDZ9uoZpTFcvh7WhUxLm --stake-net '50.00 SYS' --stake-cpu '50.00 SYS' --buy-ram-kbytes 8

cleos system newaccount eosio initc EOS534ZY8Qk6HCAKubu2prUGxbnsq7NqVq6gK8GWnbUh74w6fD7pG EOS7nNUJ9Nibw5uDYzjgKJ618YrD7yLBbAcxQXGmqJk4XjGRicDeg --stake-net '50.00 SYS' --stake-cpu '50.00 SYS' --buy-ram-kbytes 8

#转账给超级节点系统币

echo "transfer SYS ..."

sleep 2

cleos  push action eosio.token transfer '["eosio", "inita","500000000.0000 SYS","vote"]' -p eosio

cleos  push action eosio.token transfer '["eosio", "initb","100000000.0000 SYS","vote"]' -p eosio

cleos  push action eosio.token transfer '["eosio", "initc","100000000.0000 SYS","vote"]' -p eosio

root@ubuntu:~/inita# cat start.sh

nodeos  --data-dir ./data --config-dir ./config  --genesis-json  ./config/genesis.json

root@ubuntu:~/inita# cat init.sh       解锁钱包,导入密钥,申请超级节点,抵押eos

#创建密钥 cleos create key --to-console

#创建钱包 cleos wallet create -n inita.wallet --to-console  密钥未:"PW5JFFCzQe37RZ2Qd4vjLsXcoKkyZCWJHvaTSWksbEMaRedfGEepS"  要记住钱包密码

#解锁钱包

echo "wallet unlock ..."

cleos wallet unlock -n inita.wallet --password PW5JFFCzQe37RZ2Qd4vjLsXcoKkyZCWJHvaTSWksbEMaRedfGEepS

#导入私钥

echo "wallet import ..."

cleos wallet import -n inita.wallet --private-key 5K5kgoqiTgYbPv5LUxhRrXodiZeJJPxdxSirVyzpPGHhw7qRvwt

cleos wallet import -n inita.wallet --private-key 5JyTcDtN9DCwjAARByqUXKQaSi2xniJL7Puds6AMvnEQfEG2ZHt

#申请超级节点

echo "regproducer ..."

cleos system regproducer inita EOS5VJv4YxPkv9asb5BfSHoDKSVnbuKfay3cNy2kcciELsCdDeqYB http://http-server-address:8888

#押金

ehco "delegatebw ..."

sleep 2

cleos system delegatebw inita inita  '200000000.0000 SYS' '200000000.0000 SYS'

root@ubuntu:~/initb# cat start.sh

nodeos  --data-dir ./data --config-dir ./config  --genesis-json  ./config/genesis.json

sh start.sh

root@ubuntu:~/initb# cat init.sh 解锁钱包,导入密钥,申请超级节点,抵押eos

#创建密钥 cleos create key --to-console

#创建钱包 cleos wallet create -n initb.wallet --to-console  密钥未:"PW5Jj5i7f9WmapBsyvhU6JbFqNeCgjcWp56s2GbHUvmzCtQYL8MY2"  要记住钱包密码

#解锁钱包

cleos wallet unlock -n initb.wallet --password PW5Jj5i7f9WmapBsyvhU6JbFqNeCgjcWp56s2GbHUvmzCtQYL8MY2

#导入私钥

cleos wallet import -n initb.wallet --private-key 5HqinXiSMZrNKrEkPuHbkvNDe5vPYDwoNeqmdLtB7yyR7aWpZkT

cleos wallet import -n initb.wallet --private-key 5Ka8i9wkTeevFtsybJZaM7s86AkAizEQYEQs5VWvHNLhfznUHa6

#申请超级节点

echo "regproducer ..."

sleep 2

cleos system regproducer initb EOS7P4K4wsKaDAkES6VSyFb6tAMRE5afkniB9jE4Sq9tqTy6yddHb http://http-server-address:8888

#押金

echo "delegatebw ..."

sleep 2

cleos system delegatebw initb initb  '25000000.0000 SYS' '25000000.0000 SYS'

root@ubuntu:~/initc# cat start.sh

nodeos  --data-dir ./data --config-dir ./config  --genesis-json  ./config/genesis.json

sh start.sh  启动节点

root@ubuntu:~/initc# cat init.sh 解锁钱包,导入密钥,申请超级节点,抵押eos

#创建密钥 cleos create key --to-console

#创建钱包 cleos wallet create -n initc.wallet --to-console  密钥未:"PW5HtgAikopEWVgJyw8P57dx4mn4oESPJ97UxS3WWAfEvpzymg6tp"  要记住钱包密码

#解锁钱包

cleos wallet unlock -n initc.wallet --password PW5HtgAikopEWVgJyw8P57dx4mn4oESPJ97UxS3WWAfEvpzymg6tp

#导入私钥

cleos wallet import -n initc.wallet --private-key 5JrmJmyPWPbEG5Tr9La1vzBKYkZfxDCdpwwHk13hBEGKzuixNEv

cleos wallet import -n initc.wallet --private-key 5KjryDqWfsqErEqbHgBq5JmKd613GiQN6uHM1F9AekjM6MuQuTp

#申请超级节点

echo "regproducer ..."

sleep 2

cleos system regproducer initc EOS534ZY8Qk6HCAKubu2prUGxbnsq7NqVq6gK8GWnbUh74w6fD7pG http://http-server-address:8888

#押金

echo "delegatebw ..."

sleep 2

cleos system delegatebw initc initc  '25000000.0000 SYS' '25000000.0000 SYS'

root@ubuntu:~/inita# cat vote.sh   用账户inita给3个节点投票

cleos system voteproducer prods  inita inita initb initc

查询

过几十秒就可以看到3个超级节点轮流出块了 

root@ubuntu:~/inita# cleos get schedule

active schedule version 4

    Producer      Producer key

    ============= ==================

    inita        EOS5VJv4YxPkv9asb5BfSHoDKSVnbuKfay3cNy2kcciELsCdDeqYB

    initb        EOS7P4K4wsKaDAkES6VSyFb6tAMRE5afkniB9jE4Sq9tqTy6yddHb

    initc        EOS534ZY8Qk6HCAKubu2prUGxbnsq7NqVq6gK8GWnbUh74w6fD7pG

pending schedule empty

proposed schedule empty

root@ubuntu:~/inita# cleos system listproducers

Producer      Producer key                                              Url                                                        Scaled votes

inita        EOS5VJv4YxPkv9asb5BfSHoDKSVnbuKfay3cNy2kcciELsCdDeqYB    http://http-server-address:8888                            0.3333

initb        EOS7P4K4wsKaDAkES6VSyFb6tAMRE5afkniB9jE4Sq9tqTy6yddHb    http://http-server-address:8888                            0.3333

initc        EOS534ZY8Qk6HCAKubu2prUGxbnsq7NqVq6gK8GWnbUh74w6fD7pG    http://http-server-address:8888                            0.3333

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,163评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,301评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,089评论 0 352
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,093评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,110评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,079评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,005评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,840评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,278评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,497评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,394评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,980评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,628评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,649评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,548评论 2 352

推荐阅读更多精彩内容