本文作者:陳進堅
個人博客:https://jian1098.github.io
CSDN博客:https://blog.csdn.net/c_jian
簡書:https://www.jianshu.com/u/8ba9ac5706b6
聯繫方式:[email protected]
安裝omnicore程序
請前往https://github.com/OmniLayer/omnicore/tags
查看最新版本並替換下面的下載鏈接
jian@ubuntu:/root# wget https://github.com/OmniLayer/omnicore/releases/download/v0.3.1/omnicore-0.3.1-x86_64-linux-gnu.tar.gz
jian@ubuntu:/root# tar -zvxf omnicore-0.3.1-x86_64-linux-gnu.tar.gz
jian@ubuntu:/root# sudo install -m 0755 -o root -g root -t /usr/local/bin ./omnicore-0.3.1/bin/*
配置bitcoin參數
jian@ubuntu:~$ mkdir .bitcoin #創建主目錄,如果目錄已經存在請跳過
jian@ubuntu:~$ mkdir omnidata #創建區塊數據目錄
jian@ubuntu:~$ cd .bitcoin/
jian@ubuntu:~/.bitcoin$ vi bitcoin.conf
將下面信息全部複製,並修改rpcuser(RPC用戶名),rpcpassword(RPC用戶密碼),rpcallowip(允許訪問的ip地址)然後保存
# Generated by https://jlopp.github.io/bitcoin-core-config-generator/
# This config should be placed in following path:
# ~/.bitcoin/bitcoin.conf
# [rpc]
# Accept command line and JSON-RPC commands.
server=1
txindex=1
# Username for JSON-RPC connections
rpcuser=omnicorerpc
# Password for JSON-RPC connections
rpcpassword=omnicorerpc
# Listen for JSON-RPC connections on this port
rpcport=17443
# 爲了不與比特幣端口衝突,使用的不是默認端口所以要加上下面的設置
listen=0
# Allow JSON-RPC connections from specified source. Valid for <ip> are a single IP (e.g. 1.2.3.4),
# a network/netmask (e.g. 1.2.3.4/255.255.255.0) or a network/CIDR (e.g. 1.2.3.4/24). This option
# can be specified multiple times.
rpcallowip=192.168.1.178
# 設定默認爲私有鏈
regtest=1
# 區塊數據目錄
datadir=/root/omnidata
啓動omnicore程序
請將-conf
和-datadir
路徑修改爲你的路徑
jian@ubuntu:~/.omni$ omnicored -conf=/root/.omnicore/bitcoin.conf -daemon
2018-11-22 10:46:09 Loading trades database: OK
2018-11-22 10:46:09 Loading send-to-owners database: OK
2018-11-22 10:46:09 Loading tx meta-info database: OK
2018-11-22 10:46:09 Loading smart property database: OK
2018-11-22 10:46:09 Loading master transactions database: OK
2018-11-22 10:46:09 Loading fee cache database: OK
2018-11-22 10:46:09 Loading fee history database: OK
2018-11-22 10:46:09 Loading persistent state: NONE (no usable previous state found)
2018-11-22 10:46:09 Omni Core initialization completed
出現上面的信息然後按Ctrl + C
退出即可,初始化1分鐘後再查看是否啓動成功,要不然不會輸出任何信息,需要輸入上一步配置的密碼,用戶名omnirpc改爲你bitcoin.conf中配置的用戶名:
jian@ubuntu:~$ curl --user omnicorerpc --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "getnetworkinfo", "params": [] }' -H 'content-type: text/plain;' http://127.0.0.1:18332
能返回下面的信息表示啓動成功
{"result":{"version":130200,"subversion":"/Satoshi:0.13.2/","protocolversion":70015,"localservices":"000000000000000d","localrelay":true,"timeoffset":0,"connections":2,"networks":[{"name":"ipv4","limited":false,"reachable":true,"proxy":"","proxy_randomize_credentials":false},{"name":"ipv6","limited":false,"reachable":true,"proxy":"","proxy_randomize_credentials":false},{"name":"onion","limited":true,"reachable":false,"proxy":"","proxy_randomize_credentials":false}],"relayfee":0.00001000,"localaddresses":[],"warnings":""},"error":null,"id":"curltest"}
停止omnicore程序
jian@ubuntu:~/.omni$ omnicore-cli -conf=/root/.omnicore/bitcoin.conf stop
創建錢包地址
jian@ubuntu:~$ curl --user omnirpc --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "getnewaddress", "params": ["test"] }' -H 'content-type: text/plain;' http://127.0.0.1:18332/
{"result":"n1Axxy3WGwFci1GJffwdY55dRem92GKXAm","error":null,"id":"curltest"}
返回結果中的 “n1Axxy3WGwFci1GJffwdY55dRem92GKXAm” 即爲新創建的USDT錢包,以m開頭表示是測試鏈的錢包地址,公鏈上的錢包地址一般是1開頭
查詢餘額
查詢比特幣餘額
jian@ubuntu:~$ curl --user omnicorerpc --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "getbalance", "params": [] }' -H 'content-type: text/plain;' http://127.0.0.1:18332/
查詢USDT餘額,請將錢包地址換成你的
jian@ubuntu:~$ omnicore-cli -conf=/root/.omnicore/bitcoin.conf omni_getbalance "n1Axxy3WGwFci1GJffwdY55dRem92GKXAm" 1
或者
jian@ubuntu:~$ curl --user omnicorerpc --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "omni_getbalance", "params": ["n1Axxy3WGwFci1GJffwdY55dRem92GKXAm", 1] }' -H 'content-type: text/plain;' http://127.0.0.1:18332/
獲取測試幣
在測試網絡testnet
和私有網絡regtest
下獲取測試幣的方式是一樣的,私有鏈使用生成區塊命令獲得比特幣後用下面的命令往moneyqMan7uh8FqdCA2BV5yZ8qVrc9ikLP
發送比特幣可以得到一點測試的USDT,每1BTC可以獲得100個USDT。爲了方便讓測試幣進入我們指定的錢包地址,我們另外生成一個指定賬號的錢包地址
jian@ubuntu:~$ omnicore-cli -conf=/root/.omnicore/bitcoin.conf getnewaddress "omni"
n2zPfoSavpGGxZwJf3pya3mXX5HVEG6wmd
執行得到錢包地址n2zPfoSavpGGxZwJf3pya3mXX5HVEG6wmd
,然後往這個錢包地址轉入比特幣
jian@ubuntu:~$ omnicore-cli -conf=/root/.omnicore/bitcoin.conf sendtoaddress "n2zPfoSavpGGxZwJf3pya3mXX5HVEG6wmd" 10
生成一個區塊讓幣到賬
jian@ubuntu:~$ omnicore-cli -conf=/root/.omnicore/bitcoin.conf generate 1
用下面的命令查看omni
賬戶的餘額可以看到餘額已經在該賬戶所屬的n2zPfoSavpGGxZwJf3pya3mXX5HVEG6wmd
地址中
jian@ubuntu:~$ omnicore-cli -conf=/root/.omnicore/bitcoin.conf listreceivedbyaddress 1 true
[
{
"address": "n2zPfoSavpGGxZwJf3pya3mXX5HVEG6wmd",
"account": "omni",
"amount": 10.00000000,
"confirmations": 1,
"label": "omni",
"txids": [
"c9da93e8a0daad57b7b4702b3ceac3d4dd51cbb563c7e982712c573eaab95715"
]
}
]
然後用omni
賬戶往moneyqMan7uh8FqdCA2BV5yZ8qVrc9ikLP
地址轉一個比特幣
jian@ubuntu:~$ omnicore-cli -conf=/root/.omnicore/bitcoin.conf sendfrom "omni" "moneyqMan7uh8FqdCA2BV5yZ8qVrc9ikLP" 1
再次生成一個區塊讓幣到賬
jian@ubuntu:~$ omnicore-cli -conf=/root/.omnicore/bitcoin.conf generate 1
查看餘額,可以看到100個USDT已經到賬
jian@ubuntu:~$ omnicore-cli -conf=/root/.omnicore/bitcoin.conf "omni_getbalance" "n2zPfoSavpGGxZwJf3pya3mXX5HVEG6wmd" 1
{
"balance": "100.00000000",
"reserved": "0.00000000",
"frozen": "0.00000000"
}
注意:如果你的區塊高度沒有到達100個以上,你將得不到任何比特幣和USDT
使用下面的命令可以查看所有餘額大於0的幣種和餘額
jian@ubuntu:~$ omnicore-cli -conf=/root/.omnicore/bitcoin.conf omni_getwalletaddressbalances
[
{
"address": "n2zPfoSavpGGxZwJf3pya3mXX5HVEG6wmd",
"balances": [
{
"propertyid": 1,
"name": "Omni",
"balance": "100.00000000",
"reserved": "0.00000000",
"frozen": "0.00000000"
},
{
"propertyid": 2,
"name": "Test Omni",
"balance": "99.00000000",
"reserved": "0.00000000",
"frozen": "0.00000000"
}
]
}
]
可以看到在私有網絡下發送比特幣會給你返回兩種測試幣,propertyid
分別是1和2,但是在主鏈,USDT的propertyid
分別是31
發送交易
參數分別是from,to,代幣id,交易數量,支付btc手續費的地址
jian@ubuntu:~$ omnicore-cli "omni_funded_send" "n1Axxy3WGwFci1GJffwdY55dRem92GKXAm" "n4VTWrjPV1QaLmM1x8ZtyLiJoFk3KaCAsi" 1 "1" "n1Axxy3WGwFci1GJffwdY55dRem92GKXAm"
如果出現報錯Error with selected inputs for the send transaction
,說明比特幣或者USDT餘額不足,往錢包轉入足夠的幣即可。
訪問JSON-RPC
可以查看:https://github.com/OmniLayer/omnicore/blob/master/src/omnicore/doc/rpc-api.md,需要用編程語言對接的話可以使用api中的函數和參數拼裝成json數據,例如本文中的查詢餘額的 json 爲{"jsonrpc": "1.0", "id":"curltest", "method": "getbalance", "params": [] }
,然後將這串json作爲參數post提交到節點的ip和端口即可返回相應的json結果。