Author Topic: ubuntu下安装bitshares-core 见证人  (Read 70640 times)

0 Members and 1 Guest are viewing this topic.

Offline ebit

  • Committee member
  • Hero Member
  • *
  • Posts: 1905
    • View Profile
  • BitShares: ebit
Quote
茄子时代  17:12:14
钱包能连上witness
喂价出错和钱包里显示的一样

ebit  17:14:51
和我一样。
一大堆东西,好像是喂价接口没找到。
茄子时代  17:17:50
。。。对   好像没找到接口
8092和8090  哪个是哪个?
有点晕
ebit  17:21:06
我理解,8090是witness的。8092是rpc-http-endpoint。可能哪里还需要设置,我不知道。
telegram:ebit521
https://weibo.com/ebiter

Offline abit

  • Committee member
  • Hero Member
  • *
  • Posts: 4664
    • View Profile
    • Abit's Hive Blog
  • BitShares: abit
  • GitHub: abitmore
ebit主贴中的喂价部分好像没写完,@abit可否补充一下呢?  先谢过了 +5%

@ebit 没同步?

不过,看起来abc123的witness本来就是这个key。换个?
是啊,我在测试怎么在新机器上迁徙xman的那个见证人。
昨天同步有问题。现在应该好了。再试试?
ebit 在搞witness,应该会接着写下去的。 +5% +5%
我好久没弄都差不多忘了  :P
BitShares committee member: abit
BitShares witness: in.abit

Offline ripplexiaoshan

  • Moderator
  • Hero Member
  • *****
  • Posts: 2300
    • View Profile
  • BitShares: jademont
ebit主贴中的喂价部分好像没写完,@abit可否补充一下呢?  先谢过了 +5%

@ebit 没同步?

不过,看起来abc123的witness本来就是这个key。换个?
是啊,我在测试怎么在新机器上迁徙xman的那个见证人。
昨天同步有问题。现在应该好了。再试试?
BTS committee member:jademont

Offline abit

  • Committee member
  • Hero Member
  • *
  • Posts: 4664
    • View Profile
    • Abit's Hive Blog
  • BitShares: abit
  • GitHub: abitmore
@ebit 没同步?

不过,看起来abc123的witness本来就是这个key。换个?
是啊,我在测试怎么在新机器上迁徙xman的那个见证人。
昨天同步有问题。现在应该好了。再试试?
BitShares committee member: abit
BitShares witness: in.abit

Offline ebit

  • Committee member
  • Hero Member
  • *
  • Posts: 1905
    • View Profile
  • BitShares: ebit
@ebit 没同步?

不过,看起来abc123的witness本来就是这个key。换个?
是啊,我在测试怎么在新机器上迁徙xman的那个见证人。
telegram:ebit521
https://weibo.com/ebiter

Offline abit

  • Committee member
  • Hero Member
  • *
  • Posts: 4664
    • View Profile
    • Abit's Hive Blog
  • BitShares: abit
  • GitHub: abitmore
@ebit 没同步?

不过,看起来abc123的witness本来就是这个key。换个?
« Last Edit: May 04, 2016, 09:26:32 am by abit »
BitShares committee member: abit
BitShares witness: in.abit

Offline ebit

  • Committee member
  • Hero Member
  • *
  • Posts: 1905
    • View Profile
  • BitShares: ebit
问题集锦

@abit 
我想update signing key,操作如下:
Code: [Select]
update_witness abc123 "http://www.btsabc.org/" "BTS8KpYFdGQQeQ1MTrWcrA6tbS71MupkqGFbhDM7su8AnZkvv7TW1" true
{
  "ref_block_num": 13568,
  "ref_block_prefix": 216310923,
  "expiration": "2016-05-03T03:27:15",
  "operations": [[
      21,{
        "fee": {
          "amount": 146763,
          "asset_id": "1.3.0"
        },
        "witness": "1.6.65",
        "witness_account": "1.2.4952",
        "new_url": "http://www.btsabc.org/",
        "new_signing_key": "BTS8KpYFdGQQeQ1MTrWcrA6tbS71MupkqGFbhDM7su8AnZkvv7TW1"
      }
    ]
  ],
  "extensions": [],
  "signatures": [
    "1f6ce724b273d41339171c66bb2139ce1a78339fc8446f7b04984b92921180021b0764bcb195419783b49bed89b7818e66888ac212756b543dc7b6e4157ef9091c"
  ]
}
结果:还是那个signing key,浏览器里也没有发生变化:
http://cryptofresh.com/u/abc123
错在哪里?
telegram:ebit521
https://weibo.com/ebiter

Offline ripplexiaoshan

  • Moderator
  • Hero Member
  • *****
  • Posts: 2300
    • View Profile
  • BitShares: jademont
BTS committee member:jademont

Offline ebit

  • Committee member
  • Hero Member
  • *
  • Posts: 1905
    • View Profile
  • BitShares: ebit
第八步:喂价
参考资料:
http://python-graphenelib.readthedocs.org/en/latest/installation.html#dependencies
https://bitsharestalk.org/index.php/topic,18852.15.html
Ubuntu下安装Python3.4
http://blog.sina.com.cn/s/blog_7cdaf8b60102vf2b.html
Python 包管理工具解惑
http://zengrong.net/post/2169.htm
Quote
(8.1安装python)
sudo apt-get install libffi-dev libssl-dev python-dev
此时输入python,可以查出还是2.7版本。
apt-get install python3.4
rm /usr/bin/python
ln -s /usr/bin/python3.4 /usr/bin/python



sudo apt-get install python-setuptools
wget https://bootstrap.pypa.io/ez_setup.py -O - | python
easy_install-3.4 install autobahn
easy_install-3.4 install requests
easy_install-3.4 install prettytable
easy_install-3.4 install numpy

Quote
8.2安装喂价程序
apt-get install python3-pip
pip3 install graphenelib
cd /root
git clone  https://github.com/xeroc/python-graphenelib.git
cd python-graphenelib
python3 setup.py install --user
apt-get install python-pip
pip install --user --upgrade  graphenelib

Quote
8.3安装喂价工具包
NumPy系统是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix))。据说NumPy将Python相当于变成一种免费的更强大的MatLab系统。
Python通过prettytable模块将输出内容如表格方式整齐输出:
linux 内核Crypto——加密模块
cd ..
apt-get install python-autobahn
pip3 install requests --upgrade
pip3 install numpy prettytable autobahn crypto



Quote
8.4编辑配置文件
ls
cd python-graphenelib/scripts/pricefeeds/
cp config-example.py config.py
Quote
编辑config.py
apt-get install vim
vi config.py
i

Quote
编辑如下几项
the host to "127.0.0.1" (with quotes)
and the port to 8092
添加解锁钱包密码you can either put your unlock password into unlock or manually unlock your wallet before starting the script
user和passwd是可选项unless you are an expert there is no need to put user/pw info
在producer_name里添加自己的见证人  change your name of your witness in delegate_list
ask_confirmation             = False
保存编辑
esc退出 :wq
Quote
8.5用自己的见证人ip端口(不要泄露,防止损失),进入CLI_wallet窗口,
cd ..
cd ..
cd ..
ls
cd bitshares-core

Code: [Select]
./programs/cli_wallet/cli_wallet  -s ws://127.0.0.1:8090 -H 127.0.0.1:8092正确时,显示lock。
unlock 你的密码
list_account_balances abc123可以查看下余额

Quote
8.6启动喂价程序
unlock your wallet
另开一个窗口
Code: [Select]
screen -S py
cd python-graphenelib/scripts/pricefeeds

python3 pricefeeds.py
Quote
You will be asked to provide confirmation of the prices!

出现错误:
Code: [Select]
myWitness = rpc.get_witness(config.producer_name)
  File "/root/.local/lib/python3.4/site-packages/graphenelib-0.3.9-py3.4.egg/grapheneapi/grapheneapi.py", line 160, in method
  File "/root/.local/lib/python3.4/site-packages/graphenelib-0.3.9-py3.4.egg/grapheneapi/grapheneapi.py", line 146, in rpcexec
  File "/root/.local/lib/python3.4/site-packages/graphenelib-0.3.9-py3.4.egg/grapheneapi/grapheneapi.py", line 138, in rpcexec
grapheneapi.grapheneapi.RPCError: 7 bad_cast_exception: Bad Cast
Invalid cast from array_type to string
    {"type":"array_type"}
    th_a  variant.cpp:478 as_string

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "pricefeeds.py", line 605, in <module>
    update_price_feed()
  File "pricefeeds.py", line 464, in update_price_feed
    fetch_from_wallet(rpc)
  File "pricefeeds.py", line 104, in fetch_from_wallet
    producerAccount = rpc.get_account(config.producer_name)
  File "/root/.local/lib/python3.4/site-packages/graphenelib-0.3.9-py3.4.egg/grapheneapi/grapheneapi.py", line 160, in method
  File "/root/.local/lib/python3.4/site-packages/graphenelib-0.3.9-py3.4.egg/grapheneapi/grapheneapi.py", line 146, in rpcexec
  File "/root/.local/lib/python3.4/site-packages/graphenelib-0.3.9-py3.4.egg/grapheneapi/grapheneapi.py", line 138, in rpcexec
grapheneapi.grapheneapi.RPCError: 7 bad_cast_exception: Bad Cast
Invalid cast from array_type to string
    {"type":"array_type"}
    th_a  variant.cpp:478 as_string
原因是我在producer_name里填了两个见证人的名字。其中一个还没有添加到witness_node,于是删掉。程序被正常执行。
但,选择公布喂价y,后,又出现了新的问题:
Code: [Select]
"feed":{"settlement_price":{"base":{"amount":315,"asset_id":"1.3.109"},"quote":{"amount":99382,"asset_id":"1.3.0"}},"maintenance_collateral_ratio":1750,"maximum_short_squeeze_ratio":1100,"core_exchange_rate":{"base":{"amount":315,"asset_id":"1.3.109"},"quote":{"amount":94412,"asset_id":"1.3.0"}}},"extensions":[]}]],"extensions":[],"signatures":["1f3219d0ff02ddf7a3ff43854ed970245051b0ccaa4ae27eefe183f347936d50862d6fc05e45a29d4856f843dc00966686bc8114c3a9ce7619d8710c97b2912df3"]}}}]}}}}
    th_a  state.cpp:38 handle_reply
同时,cli_wallet也同时崩溃,显示同上。
明天继续
« Last Edit: July 23, 2017, 10:36:04 pm by ebit »
telegram:ebit521
https://weibo.com/ebiter

Offline 当年很厉害

  • Sr. Member
  • ****
  • Posts: 310
    • View Profile
BTS粉里有SB!

Offline ebit

  • Committee member
  • Hero Member
  • *
  • Posts: 1905
    • View Profile
  • BitShares: ebit
第五步:导入账户
unlocked >>> import_key "nathan" 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3 true

如果运行中出现错误,检查bitshares-core目录下的witness_node_data_dir下的config.ini
# Endpoint for P2P node to listen on
# p2p-endpoint =

# P2P nodes to connect to on startup (may specify multiple times)
# seed-node =

# JSON array of P2P nodes to connect to on startup
# seed-nodes =

# Pairs of [BLOCK_NUM,BLOCK_ID] that should be enforced as checkpoints.
# checkpoint =

# Endpoint for websocket RPC to listen on
rpc-endpoint = 127.0.0.1:8090

# Endpoint for TLS websocket RPC to listen on
# rpc-tls-endpoint =

# The TLS certificate file for this server
# server-pem =

# Password for this certificate
# server-pem-password =

# File to read Genesis State from
# genesis-json =

# Block signing key to use for init witnesses, overrides genesis file
# dbg-init-key =

# JSON file specifying API permissions
# api-access =

# Enable block production, even if the chain is stale.
enable-stale-production = false

# Percent of witnesses (0-99) that must be participating in order to produce blocks
required-participation = false

# ID of witness controlled by this node (e.g. "1.6.5", quotes are required, may specify multiple times)
# witness-id =

# Tuple of [PublicKey, WIF private key] (may specify multiple times)
private-key = ["PUBLICKEYHERE","PRIVATEKEYHERE"]

# Account ID to track history for (may specify multiple times)
# track-account =

# Track market history by grouping orders into buckets of equal size measured in seconds specified as a JSON array of numbers
bucket-size = [15,60,300,3600,86400]

# How far back in time to track history for each bucket size, measured in the number of buckets (default: 1000)
history-per-size = 1000

# declare an appender named "stderr" that writes messages to the console
[log.console_appender.stderr]
stream=std_error

# declare an appender named "p2p" that writes messages to p2p.log
[log.file_appender.p2p]
filename=logs/p2p/p2p.log
# filename can be absolute or relative to this config file

# route any messages logged to the default logger to the "stderr" logger we
# declared above, if they are info level are higher
[logger.default]
level=info
appenders=stderr

# route messages sent to the "p2p" logger to the p2p appender declared above
[logger.p2p]
level=debug
appenders=p2p


第六步:升级账户
unlocked >>> upgrade_account my-account true
unlocked >>> create_witness my-account "http://witness.bar.com/" true

第七步:让大家投票
自己投自己unlocked >>> vote_for_witness my-account my-account true true
自己投nathan unlocked >>> vote_for_witness nathan my-account true true

第八步:运行见证人
找见证人id和私钥
unlocked >>> get_witness my-account
{
  "id": "1.6.10",
  "witness_account": "1.2.16",
  "signing_key": "GPH7vQ7GmRSJfDHxKdBmWMeDMFENpmHWKn99J457BNApiX1T5TNM8",
}
unlocked >>> dump_private_keys
[[
  ...
  ],[
    "GPH7vQ7GmRSJfDHxKdBmWMeDMFENpmHWKn99J457BNApiX1T5TNM8",
    "5JGi7DM7J8fSTizZ4D9roNgd8dUc5pirUe9taxYCUUsnvQ4zCaQ"
  ]
]

重新运行witness_node
./witness_node --rpc-endpoint=0.0.0.0:8090 --enable-stale-production --witness-id \""1.6.0"\" \""1.6.1"\" \""1.6.2"\" \""1.6.3"\" \""1.6.4"\"  \""1.6.5"\" \""1.6.6"\" \""1.6.7"\" \""1.6.8"\" \""1.6.9"\"  \""1.6.10"\" --private-key "[\"GPH7vQ7GmRSJfDHxKdBmWMeDMFENpmHWKn99J457BNApiX1T5TNM8\", \"5JGi7DM7J8fSTizZ4D9roNgd8dUc5pirUe9taxYCUUsnvQ4zCaQ\"]"错了,这是测试链的

正确的是:
Code: [Select]
./witness_node -s 104.200.28.117:61705 --rpc-endpoint=127.0.0.1:8090 --witness-id '"你的见证人序列号"' --private-key '["账户公钥", "账户activkey"]' --replay-blockchain

一个非常特殊的IP:0.0.0.0 这个IP相当于java中的this,代表当前设备的IP。
特殊的IP地址段:
127.x.x.x
这是大家最熟悉不过的本地loopback地址,在windows和linux上等价于localhost。
我们习惯于使用127.0.0.1,实际上,
如果你在命令行下ping 127.0.0.1-127.255.255.254之间的任意地址,结果都是一样的,它们是等价的。
背后的秘密就在与0.0.0.0这个IP,他可以代表本机的所有IP地址,
但这个IP并不是真是存在的,我们ping不通它
本机ip、127.0.0.1和0.0.0.0区别
http://www.2cto.com/net/201310/253427.html

例如:
./witness_node -s 104.200.28.117:61705 --rpc-endpoint=127.0.0.1:8090 --witness-id '"1.6.69"' --private-key '["BTSertyugfdutruytiS71MtyGrZkvvtyiyttTWyiyt1", "5triytiytritriytiytiv8DnZuFrytiytVytiytf7ryiuT"]' --replay-blockchain
或者
./witness_node --rpc-endpoint=127.0.0.1:8090 \
               --witness-id '"1.6.10"' \
               --private-key '["GPH7vQ7GmRSJfDHxKdBmWMeDMFENpmHWKn99J457BNApiX1T5TNM8", "5JGi7DM7J8fSTizZ4D9roNgd8dUc5pirUe9taxYCUUsnvQ4zCaQ"]'










How To become an active witness in BitShares 2.0
https://github.com/cryptonomex/graphene/wiki/How%20to%20become%20an%20active%20witness%20in%20BitShares%202.0


In case it may be helpful, here is the whole procedure I have used:
https://bitsharestalk.org/index.php/topic,18751.375.html
« Last Edit: July 23, 2017, 10:37:19 pm by ebit »
telegram:ebit521
https://weibo.com/ebiter

Offline namjar

  • Full Member
  • ***
  • Posts: 51
    • View Profile
如何搭建 witness node 服务器?

Offline namjar

  • Full Member
  • ***
  • Posts: 51
    • View Profile

Offline ebit

  • Committee member
  • Hero Member
  • *
  • Posts: 1905
    • View Profile
  • BitShares: ebit
参考:
https://github.com/cryptonomex/graphene
http://docs.bitshares.eu/installation/Build.html#building-bitshares-graphene

Building BTS 2.0 in Ubuntu from scratch
https://bitsharestalk.org/index.php/topic,19612.0.html

HOWTO RUN A BLOCK-PRODUCING WITNESS
http://docs.bitshares.eu/bitshares/tutorials/witness-howto.html

第一步:内存12G以上。
准备环境,保证网络畅通,能翻墙就翻墙。
(1)因为14.04 LTS不提供g++-4.9,所以要:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test

Quote
sudo: add-apt-repository: command not found
sudo apt-get install python-software-properties
Quote
安装后还是报command not found,所以依赖包还没有安装完全,少了什么呢?
执行命令:
add-apt-repository
Quote
,发现还需要software-properties-common
ok,执行安装命令:
apt-get install software-properties-common

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update

Quote
If you get build failures due to abi incompatibilities, just use gcc 4.9:
CC=gcc-4.9 CXX=g++-4.9 cmake .
参考资料:http://askubuntu.com/questions/466651/how-do-i-use-the-latest-gcc-on-ubuntu-14-04
(2)安装依赖的工具
sudo apt-get update
sudo apt-get install gcc-4.9 g++-4.9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9
Quote
The --slave, with g++, will cause g++ to be switched along with gcc, to the same version. But, at this point gcc-4.9 will be your only version configured in update-alternatives
sudo apt-get install cmake make libbz2-dev libdb++-dev libdb-dev libssl-dev openssl libreadline-dev autoconf libtool git libcurl4-openssl-dev
Quote
如果gcc-4.9还出错,那就重复上一环节,可能网络问题导致安装失败,多来几次就好了
(3)Build Boost 1.57.0 ,可能要翻墙,有时候连不上。也可以浏览器下载。
BOOST_ROOT=$HOME/opt/boost_1_57_0
sudo apt-get update
sudo apt-get install autotools-dev build-essential g++ libbz2-dev libicu-dev python-dev

Code: [Select]
wget -c 'http://sourceforge.net/projects/boost/files/boost/1.57.0/boost_1_57_0.tar.bz2/download' -O boost_1_57_0.tar.bz2
[ $( sha256sum boost_1_57_0.tar.bz2 | cut -d ' ' -f 1 ) == "910c8c022a33ccec7f088bd65d4f14b466588dda94ba2124e78b8c57db264967" ] || ( echo 'Corrupt download' ; exit 1 )

tar xjf boost_1_57_0.tar.bz2

cd boost_1_57_0/

./bootstrap.sh "--prefix=$BOOST_ROOT"

./b2 install

第二步:Build Graphene
cd ..
git clone https://github.com/bitshares/bitshares-core.git
cd bitshares-core
git submodule update --init --recursive
BOOST_ROOT=$HOME/opt/boost_1_57_0
CC=gcc-4.9 CXX=g++-4.9 cmake -DBOOST_ROOT="$BOOST_ROOT" -DCMAKE_BUILD_TYPE=Debug .
make

Quote
如果出了错误,重来时要 rm CMakeCache.txt
提示错误:编译时找不到Makefile,大多数原因是boost没安装好。

第三步:运行节点
apt-get install screen
screen -S n
./programs/witness_node/witness_node -s 104.200.28.117:61705 --rpc-endpoint=127.0.0.1:8090
如果同步出错,那么添加--replay-blockchain试试
(要在bitshares-2目录下执行,否则,容易出现路径识别错误)


第四步:  区块同步完成后,另来一个窗口 运行命令行钱包
screen -S w
cd bitshares-core/programs/cli_wallet
./cli_wallet -s ws://127.0.0.1:8090

new>>>set_password bts2000
locked >>> unlock bts2000


使用教程
https://github.com/cryptonomex/graphene/wiki/CLI-Wallet-Cookbook
命令列表
https://github.com/cryptonomex/graphene/blob/master/libraries/wallet/include/graphene/wallet/wallet.hpp
(help)
        (gethelp)
        (info)
        (about)
        (begin_builder_transaction)
        (add_operation_to_builder_transaction)
        (replace_operation_in_builder_transaction)
        (set_fees_on_builder_transaction)
        (preview_builder_transaction)
        (sign_builder_transaction)
        (propose_builder_transaction)
        (propose_builder_transaction2)
        (remove_builder_transaction)
        (is_new)
        (is_locked)
        (lock)(unlock)(set_password)
        (dump_private_keys)
        (list_my_accounts)
        (list_accounts)
        (list_account_balances)
        (list_assets)
        (import_key)
        (import_accounts)
        (import_account_keys)
        (import_balance)
        (suggest_brain_key)
        (register_account)
        (upgrade_account)
        (create_account_with_brain_key)
        (sell_asset)
        (sell)
        (buy)
        (borrow_asset)
        (cancel_order)
        (transfer)
        (transfer2)
        (get_transaction_id)
        (create_asset)
        (update_asset)
        (update_bitasset)
        (update_asset_feed_producers)
        (publish_asset_feed)
        (issue_asset)
        (get_asset)
        (get_bitasset_data)
        (fund_asset_fee_pool)
        (reserve_asset)
        (global_settle_asset)
        (settle_asset)
        (whitelist_account)
        (create_committee_member)
        (get_witness)
        (get_committee_member)
        (list_witnesses)
        (list_committee_members)
        (create_witness)
        (update_witness)
        (create_worker)
        (update_worker_votes)
        (get_vesting_balances)
        (withdraw_vesting)
        (vote_for_committee_member)
        (vote_for_witness)
        (set_voting_proxy)
        (set_desired_witness_and_committee_member_count)
        (get_account)
        (get_account_id)
        (get_block)
        (get_account_count)
        (get_account_history)
        (get_market_history)
        (get_global_properties)
        (get_dynamic_global_properties)
        (get_object)
        (get_private_key)
        (load_wallet_file)
        (normalize_brain_key)
        (get_limit_orders)
        (get_call_orders)
        (get_settle_orders)
        (save_wallet_file)
        (serialize_transaction)
        (sign_transaction)
        (get_prototype_operation)
        (propose_parameter_change)
        (propose_fee_change)
        (approve_proposal)
        (dbg_make_uia)
        (dbg_make_mia)
        (dbg_push_blocks)
        (dbg_generate_blocks)
        (dbg_stream_json_objects)
        (dbg_update_object)
        (flood_network)
        (network_add_nodes)
        (network_get_connected_peers)
        (set_key_label)
        (get_key_label)
        (get_public_key)
        (get_blind_accounts)
        (get_my_blind_accounts)
        (get_blind_balances)
        (create_blind_account)
        (transfer_to_blind)
        (transfer_from_blind)
        (blind_transfer)
        (blind_history)
        (receive_blind_transfer)
        (get_order_book)

如果同步未完成,cli_wallet运行会出错:
Code: [Select]
root@iZ11zwnk21tZ:~/bitshares-2/programs/cli_wallet# ./cli_wallet -s ws://127.0.0.1:8090 -H 127.0.0.1:8091
Logging RPC to file: logs/rpc/rpc.log
1808214ms th_a       main.cpp:120                  main                 ] key_to_wif( committee_private_key ): 5KCBDTcyDqzsqehcb52tW5nU6pXife6V2rX9Yf7c3saYSzbDZ5W
1808214ms th_a       main.cpp:124                  main                 ] nathan_pub_key: BTS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
1808214ms th_a       main.cpp:125                  main                 ] key_to_wif( nathan_private_key ): 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
11 eof_exception: End Of File
unexpected end of file
th_a  json.cpp:430 variant_from_stream
« Last Edit: January 28, 2018, 01:38:50 pm by ebit »
telegram:ebit521
https://weibo.com/ebiter