180611_bitcoin-cli-1
11 Jun 2018 | Blockchain bitcoin cli rpc과제목표
- 비트코인 API 기능을 분석하여, backend 팀에서 사용자에게 서비스를 구현해주기 위한 환경을 구성하는데 필요한 기능을 이해한다.
- API기능을 이해하고, 사용자단에서 접근하기 쉬운 미들웨어 환경을 구성할 수 있도록 한다.
비트코인 코어의 JSON-RPC API사용하기(bitcoin-cli)
- bitcoin-cli 는 비트코인 소스를 실행시키기 위한 tool
- RPC(Remote Procedure Call)의 약자로 bitcoin core의 procedure를 http protocol을 이용하여 호출한다.
- api reference
- bitcoin-cli 를 사용하면 명령 줄에서 RPC 명령을 비트 코인으로 보낼 수 있다.
- 사용가능한 JSON RPC 목록 확인 : bitcoin-cli help
현재 사용중인 bitcoin testnet version
- 0.15 (최신 0.16)
ex
deprecated되는 ‘account’ API (‘label’ and ‘account’ APIs for wallet).
- 새 ‘label’API가 wallet에 도입됨.
- 이는 사용되지 않을 ‘account’API를 대체하기위한 것.
- ‘account’는 ‘-deprecatedrpc = accounts’ 인자로, V0.17에서 계속 사용될 수 있으며 V0.18에서 완전히 제거될 예정이다.
- deprecated된 파라미터 account는 ‘lable’로 변경된다. ‘-deprecatedrpc = accounts’로 실행하는 경우에는 이전 버전과의 호환성을 고려한다.
- 참고 : ‘label’ and ‘account’ APIs for wallet
변경사항
- ‘label’ RPC 메서드는 다음 기능적 차이점을 제외하고 ‘account’ 기능을 반영한다.
- label은 주소 수신뿐만 아니라 모든 주소에서 설정할 수 있다. 이 기능은 이전에는 GUI를 통해서만 가능했다.
- label은 setlabel RPC 메소드를 사용하여 모든 주소를 재 지정하여 삭제할 수 있다.
- label에서 트랜잭션을 전송하거나 트랜잭션이 전송 된 레이블을 결정할 수는 없다.
- label은 ‘balance’가 없다.
- Changes to RPC Methods
Deprecated Method | New Method | Notes |
---|---|---|
getaccount | getaddressinfo | getaddressinfo 는 계정 이름 대신 주소 정보가있는 json 객체를 문자열로 반환합니다. |
getaccountaddress | getlabeladdress | 만약 ‘label’이 이미 존재하지 않는다면, getlabeladdress 는 디폴트로 에러를 던지지만, 기존 응용 프로그램과의 호환성을 위한 강제 옵션(force option)을 제공합니다. |
getaddressesbyaccount | getaddressesbylabel | getaddressesbylabel 은 문자열 목록 대신 key와 같은 주소를 가진 json 객체를 반환합니다. |
getreceivedbyaccount | getreceivedbylabel | no change in behavior |
listaccounts | listlabels | listlabels 는 balance 을 반환하거나 minconf 및 watchonly 인수를 허용하지 않습니다. |
listreceivedbyaccount | listreceivedbylabel | 두 방법 모두 이전 버전과의 호환성을 위해 account fields와 함께 새 label fields를 반환합니다. |
setaccount | setlabel | address가 address를 수신하지 못하면 오류를 제기하는 대신 모든 주소에 레이블을 할당 할 수 있습니다. |
move | n/a | no replacement |
sendfrom | n/a | no replacement |
- no replacement 인 move, sendfrom
move, sendfrom
는 no replacement이다.
move
명령은 Bitcoin Core의 내부 account 시스템을 위한 것 입니다. 실제로 트랜잭션을 생성하지는 않으며 Bitcoin Core 내부의 account 중 2 개의 balance 만 변경합니다. move명령은 주소가 연결된 계정을 변경하는 것이고, 실제로 변경되는건 지갑 내부 데이터베이스 항목입니다. 결국, account 시스템이 제거 될 것이므로 더 이상 move 명령이 필요 없으며, RPC를 사용하여 Bitcoin을 실제로 보내려면sendtoaddress
또는sendmany
를 사용해야합니다.
sendfrom
도 deprecated되기 때문에sendtoaddress
를 사용한다.
- 참고 : https://bitcointalk.org/index.php?topic=1974458.0, http://chainquery.com/bitcoin-api/sendfrom, bitcoin-cli help sendfrom
- Changed Method
Changed Method | Notes |
---|---|
addmultisigaddress | account 파라미터를 label 파라미터로 변경. ‘-deprecatedrpc = accounts’를 실행하면 이전 버전과의 호환성을 고려한다. |
getnewaddress | account 파라미터를 label 파라미터로 변경. ‘-deprecatedrpc = accounts’를 실행하면 이전 버전과의 호환성을 고려한다. |
listunspent | 새 label 필드를 반환. ‘-deprecatedrpc = accounts’로 실행하면 이전 버전과의 호환성을 위해 계정 필드가 반환. |
listtransactions | account 파라미터를 dummy 로 변경. dummy 매개변수는 * (string) 사용(-deprecatedrpc = accounts 를 사용하지 않을 경우). |
sendmany | account파라미터를 dummy로 변경. dummy 매개변수는 *`(string) 사용(-deprecatedrpc = accounts 를 사용하지 않을 경우). |
getbalance | account, minconf 및 include_watchonly 매개 변수는 더 이상 사용되지 않으며 ‘-deprecatedrpc = accounts’로 실행하는 경우에만 사용 가능. |
(ex)
bitcoin-cli | change |
---|---|
$ addmultisigaddress nrequired ["key",...] ( "account" ) |
( "account" ) 파라미터를 ("label") 로 변경. |
$ getnewaddress ( "account" ) |
( "account" ) 파라미터를 ("label") 로 변경. |
$ bitcoin-cli listtransactions ( "account" ) |
( "account" ) 파라미터를 "*" 로 변경. |
주로 쓰이는 명령어들
- getnewaddress
- getbalance
getinfo (DEPRECATED)
- getrawtransaction
getaccount (DEPRECATED)
getaddressesbyaccount (DEPRECATED)
- gettransaction
- getblock
- getblockcount
- getblockhash
- listtransactions
move (DEPRECATED)
sendfrom (DEPRECATED)
- sendmany
- sendtoaddress
- validateaddress
- listunspent
- getwalletinfo
- addmultisigaddress
- createrawtransaction
- signrawtransaction
- sendrawtransaction
- walletpassphrase
getnewaddress
getnewaddress ("account")
- return : 지불을 받기 위한 새로운 비트코인 주소생성. 만약 account = specified (DEPRECATED), 주소록에 추가된다. 그래서 주소로부터 받은 지불금은 계좌에 적립된다.
- arguments : account (string, optional) DEPRECATED.
- result : (string) address : 새로운 비트코인 주소
- ex :
bitcoin-cli getnewaddress
n4Nc1qzbgCDjyo7AFfDUguRpey9cqS5yTS
getbalance
getbalance ("account" minconf include_watchonly)
-
returns :
- account ““은 파라미터가 없는것(디폴트) 과 다르다(?). 서버의 전체 잔액은 기본계정의 잔액과 다를 수 있다.
- account != specified : 서버의 전체 이용가능한 잔액
-
account = specified (DEPRECATED) 계좌의 잔액 리턴. ( account, minconf 및 include_watchonly 매개 변수는 더 이상 사용되지 않으며 ‘-deprecatedrpc = accounts’로 실행하는 경우에만 사용할 수 있다.)
-
arguments :
- account (string, optional) DEPRECATED
- minconf (numeric, optional, default=1)
-
include_watchonly (bool, optional, default=false)
- result : account (numeric) 이 계정에 대해 받은 btc의 총 금액.
- ex :
bitcoin-cli getbalance "*" 6
1.33521885
getinfo(DEPRECATED)
- DEPRECATED. : 0.16버전에선 더 이상 사용되지 않음.
- replaced : 0.16업그레이드 전에는 getblockchaininfo, getnetworkinfo, and get walletinfo 사용
- return : 다양한 상태정보가 포함된 객체들을 리턴
-
result : version, block, proxy, difficulty, testnet등의 정보를 object로 리턴함.
- getblockchaininfo : 블록 체인 처리와 관련하여 다양한 상태 정보를 포함하는 객체를 반환
- getnetworkinfo : P2P 네트워킹과 관련된 다양한 상태 정보를 포함하는 객체를 반환
- getwalletinfo : 지갑 상태 정보를 포함하는 객체를 반환한다.
getrawtransaction
getrawtransaction "txid" (verbose)
- mempool 트랜잭션에서만 작동.
- mempool? : 비트코인 거래를 하기 위해 트랜잭션을 생성하고, 각 노드들에 해당 트랜잭션을 전파한다. 각 노드는 해당 트랜잭션이 유효한 거래인지 검증 후 ‘검증된’ 트랜잭션을 mempool에 업데이트 하게 된다.
mempool은 아직 거래가 성립되지 않은, 즉 0 컨펌 상태의 트랜잭션들이 저장되는 공간.
-
return : 원시 거래(transaction) data.
- verbose = true : (object) txid에 대한 정보 객체 리턴
-
verbose = false omitted : (string) txid에 대한 직렬화되고 16진수로 인코딩된 문자열 반환. - arguments : 1. txid (string, required) : the transaction id , 2. verbose (bool, optional)
- result : hex, txid, size, version, locktime, etc,, 에 대한 객체 리턴.
getaccount ( DEPRECATED.)
getaccount "address"
- replace : getaddressinfo
- arguments : address (string, required) 계정 조회용 비트 코인 주소.
- return : 주어진 주소와 연관된 계좌 이름 반환.
- result : (string) accountname : 계좌 주소
getaddressesbyaccount ( DEPRECATED.)
getaddresssesbyaccount "account"
- replace : getaccount, getbalance, getaddressesbylabel
- return : 주어진 계좌 주소의 리스트
- arguments : account (string, required) 계좌 이름
- result : (json array of string) 주어진 계좌와 관련된 비트코인 주소 리턴
- ex :
bitcoin-cli getaddressesbyaccount "tabby"
[ (json array of string) “address” (string) a bitcoin address associated with the given account ,… ]
gettransaction
gettransaction "txid" (include_wathonly)
- return : txid에 대한 지갑내의 거래정보 세부사항을 가져온다.
-
arguments :
- “txid” (string, required) 거래(transaction) id,
-
“inclued_watchonly” (bool, optional, default=false) : 잔액계산과 세부사항에 inclued_watchonly를 포함 할지의 여부.
- result : amount(numeric), confirmation, blockhash, blocktime, txid, details, hex 등의 정보 객체값들 리턴.
- ex :
bitcoin-cli gettransaction "1075db55d416d3ca199f55b6084e2115b9345e16c5cf302fc80e9d5fbf5d48d" false
getblock
- getblock rpc는 로컬블럭 데이터 베이스의 특정한 헤더 해쉬 블럭값을 제이슨 객체형식으로 가져오거나, 직렬화된 블럭으로 가져온다.
getblock "blockhash" (verbosity)
- arguments : 1. blockchain, 2.verbosity(다변)
-
returns & result :
- verbosity = 0 : (string) 블럭 헤더의 해시, rpc바이트 순서로 16진수로 인코딩 된 값.
- verbosity = 1 : (object) 블럭 해시에 대한 정보.
- verbosity = 2 : (object) 블럭 해시에 대한 정보들과 각각의 거래(transaction)에 대한 정보들.
getblockcount
- return : 가장 긴 블록체인의 블럭수를 리턴
- result : (numeric) 현재 블록수
getblockhash
- return : 제공된 최고 높이의 블록 체인에서 블록의 해시.
- arguments : height (numeric) 인덱스의 높이
- result : (string) 블럭 해시.
- ex :
bitcoin-cli getblockhash 1000
00000000373403049c5fff2cd653590e8cbe6f7ac639db270e7d1a7503d698df
listtransactions
listtransactions ("account" count skip include_watchonly)
- return : ‘계정’의 첫 번째 ‘트랜잭션’을 건너 뛰는 가장 최근의 트랜잭션을 ‘계산’합니다.
-
arguments :
- account (string, optional) : DEPRECATED(account라는 파라미터 이름은 dummy로 변경, deprecatedrpc=accounts로 인자가 지정되지 않는 경우, * 문자열로 설정해야 한다. )
- count (numeric, optional, default=10) 반활할 트랜잭션수
- skip (numeric, optional, default=0) 건너뛸 트랜잭션수
-
include_watchonly (bool, optional, default=false) 보기 전용 주소에 대한 거래를 포함함.
- result : count, address, label, fee, blockhash 등에 대한 json array 형식으로 반환
- ex :
bitcoin-cli listtransactions "*" 20 100
[ { “account”: “7ebffe5e33d2455daaa246d65fb2dedd”, “category”: “move”, “time”: 1512092220, “amount”: -0.10000000, “otheraccount”: “evatransaction”, “comment”: “” }, … ]
move(DEPRECATED)
move "fromaccount" "toaccount" amount ( minconf "comment" )
- replace : no replacement
- return : 지갑의 한 계좌에서 다른 계좌로 지정된 금액을 이동.
-
arguments :
- fromaccount (string, required) 자금 이동을 위한 계좌의 이름. ““를 이용해 default 계좌 이용.
- toaccount (string, required) 자금을 이전할 계좌의 이름. ““를 이용해 default 계좌 이용.
- amount (numeric) 계정간 이동하는 btc의 양.
- (dummy) (numeric, optional) ingnore.
-
comment (string, optional) 지갑에만 저장되는 선택적 주석.
- result : true / false : (boolean) 성공적이라면 true 반환.
- ex :
bitcoin-cli move "timotei" "akiko" 0.01 6 "happy birthday"
true
sendfrom(DEPRECATED)
sendfrom "fromaccount" "toaddress" amount ( minconf "comment" "comment_to" )
- replace : sendtoaddress 사용.
- 금액을 계정에서 비트코인 주소로 보낸다.
- walletpassphrase 호출로 지갑 암호를 설정해야한다.
-
arguments :
- “fromaccount” (string, required) 송금할 계좌 이름
- “toaddress” (string, required) 자금을 보낼 비트코인 주소.
- amount (numeric or string, required) btc 금액.
- minconf (numeric, optional, default=1) 최소한의 확인이 필요한 자금만 사용.
- “comment” (string, optional) 거래가 저장되는 데 사용되는 주석.
-
“comment_to” (string, optional) 트랜잭션을 전송할 사람 또는 조직의 이름을 저장하기 위한 선택적 주석.
- result : “txid” (string) 거래 id
ex :
bitcoin-cli sendfrom "tabby" "1M72Sfpbz1BPpXFHz9m3CdqATR44Jvaydd" 0.01 6 "donation" "seans outpost"
sendmany
sendmany "fromaccount" {"address":amount,...} ( minconf "comment" ["address",...] replaceable conf_target "estimate_mode")
- return : 여러 번 보낸다. 양은 두배 정밀도 부동 소수점 숫자이다.
-
arguments :
- “fromaccount” (string, required) DEPRECATED. 송금할 계좌. 디폴트 계정은 ““로 표기.
- “amounts” (string, required) 주소와 계정을 가지는 json object
{ “address” : amount } (numeric or string) 비트코인 주소는 키, btc의 숫자값(string일 수도 있음)은 값.
- minconf (numeric, optional, default=1) 최소한 여러번 확인된 잔액만 사용.
- “comment” (string, optional) 주석
- subtracfeefrom (array, optional) 주소들의 json array. 수수료는 선택한 각 주소의 금액에서 똑같이 공제된다.
“address”, … subtract fee
- replaceable
- conf_target
-
“estimate_mode” (“unset”, “economical”, “conservative”)
- result : “txid” (string) send의 트랜잭션 id. 주소 수에 관계 없이 단 하나의 트랜잭션만 생성.
ex :
bitcoin-cli sendmany "" "{\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XX\":0.01,\"1353tsE8YMTA4EuV7dgUXGjNFf9KpVvKHz\":0.02}" 1 "" "[\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XX\",\"1353tsE8YMTA4EuV7dgUXGjNFf9KpVvKHz\"]"
sendtoaddress
sendtoaddress "address" amount ( "comment" "comment_to" subtractfeefromamount replaceable conf_target "estimate_mode")
- return : 주어진 주소로 금액을 보내기
- result : “txid” (string) 트랜잭션 id
validateaddress “address”
- 주어진 비트 코인 주소에 대한 정보를 반환.
listunspent
listunspent ( minconf maxconf ["addresses",...] [include_unsafe] [query_options])
- return : 미확정된 트랜잭션 출력의 배열을 반환(minconf와 maxconf (포함) 확인 사이).
getwalletinfo
- 지갑 상태 정보를 포함하는 객체를 반환한다.
Result: { “walletname”: xxxxx, (string) the wallet name “walletversion”: xxxxx, (numeric) the wallet version “balance”: xxxxxxx, (numeric) the total confirmed balance of the wallet in BTC “unconfirmed_balance”: xxx, (numeric) the total unconfirmed balance of the wallet in BTC …. }
createrawtransaction
-
createrawtransaction [{"txid":"id","vout":n},...] {"address":amount,"data":"hex",...} ( locktime ) ( replaceable )
- 주어진 입력을 소비하고 새로운 산출물을 생성하는 트랜잭션을 생성.
- 출력은 주소 또는 데이터 일 수 있다.
- 16 진수로 인코딩 된 원시 트랜잭션을 반환.
- 트랜잭션의 입력은 서명되지 않았으며 지갑에 저장되거나 네트워크로 전송되지 않는다.
Result: “transaction” (string) hex string of the transaction
signrawtransaction
signrawtransaction "hexstring" ( [{"txid":"id","vout":n,"scriptPubKey":"hex","redeemScript":"hex"},...]["privatekey1",...] sighashtype )
`- 원시 트랜잭션에 대한 입력 서명 (serialized, hex-encoded).
- 두번째 인자값(null일 수 있음.) : 이 트랜잭션에 의존하지만 아직 블록체인에 없을 수 있는 이전 트랙잭션 출력의 배열.
- 세번째 인자값(null일 수 있음.) : 값이 주어진 경우, 트랜잭션 서명에 사용되는 유일한 키가 될 base58 인코딩의 private key 배열.
sendrawtransaction
sendrawtransaction "hexstring" ( allowhighfees )
- 원시 트랜잭션 (직렬화, 16 진수 인코딩)을 로컬 노드 및 네트워크에 제출한다.
createrawtransaction
및signrawtransaction
호출도 참조
walletpassphrase
walletpassphrase "passphrase" timeout
- walletpassphrase RPC는 표시된 초 수 동안 지갑 암호 해독 키를 메모리에 저장한다.
- Wallet이 이미 잠금 해제되어있는 동안 walletpassphrase 명령을 실행하면 이전 잠금보다 새로운 잠금 해제 시간이 설정된다.
Multisignature 개념
- 다중서명을 통해 보안성을 높인다.
- 여러개의 개인키를 발행하고, 이들이 모두 있어야만 가상계좌에 저장된 비트코인을 사용할 수 있도록 함.
- 한 개의 금고에 여러 개 좌물쇠를 걸어놓고, 모든 좌물쇠를 열어야만 금고를 열 수 있는 것과 같은 원리.
createmultisig
createmultisig nrequired ["key",...]
- m키의 n개의 서명이 필요한 다중 서명 주소를 만든다.(Creates a multi-signature address with n signature of m keys required.)
- return : 주소와 redeemScript를 가진 json객체를 반환한다.
addmultisigaddress
addmultisigaddress nrequired ["key",...] ( "account" )
- nrequired-to-sign 다중 서명 주소를 지갑에 추가.
- 각 키는 Bitcoin 주소 또는 16 진수로 인코딩 된 공개 키 이다.
- ‘account’가 지정되면 (DEPRECATED) 주소를 해당 계정에 할당.
- account를 label로 지정. 만약’-deprecatedrpc=accounts’로 인자를 지정한다면, 호환성을 고려한다.
그 외 나머지…
< Blockchain 부분 >
getbestblockhash
- return : 가장 긴 블록체인에서 가장 top 블록의 해시
getblock
getblock "blockhash" ( verbosity )
- return : 블록 체인 처리와 관련하여 다양한 상태 정보를 포함하는 객체를 반환
getblockchaininfo
- return : 블록 체인 처리와 관련하여 다양한 상태 정보를 포함하는 객체를 반환.
getblockhash height
- return : height값에 따른 getblockhash 리턴
- 제공된 블럭 높이에서 가장 좋은 블럭 체인의 블럭 해시를 반환.
getblockheader
getblockheader "hash" ( verbose )
- verbose = false : 블록 헤더 해시에 대해 16진수로 인코딩된 직렬화 문자열 반환.
- verbose = true : 블록 헤더 <해시>에 대한 정보가 있는 object를 반환한다.해시>
getchaintips
- return : 메인 체인과 orphaned braches를 포함한, 블록 트리에 대해 알려진 모든 팀에 대한 정보 반환.
- result :
{ “height”: 1277367, “hash”: “000000000002121d27d63fc5a4ea958d74613c72ed952c73c2e318b01021cc8d”, “branchlen”: 1, “status”: “valid-fork” }, …
getchaintxstats
getchaintxstats ( nblocks blockhash )
- return : 체인의 총 트랜잭션 수와 속도에 대한 통계 계산.
- result :
{ “time”: xxxxx, (numeric) The timestamp for the statistics in UNIX format. “txcount”: xxxxx, (numeric) The total number of transactions in the chain up to that point. “txrate”: x.xx, (numeric) The average rate of transactions per second in the window. }
getdifficulty
- 최소 작업 난이도의 배수로 작업 증명 난이도 반환.
getmempoolancestors
getmempoolancestors txid (verbose)
- return : txid가 mempool에 있으면 모든 in-mempool 조상을 반환.
- mempool? : 비트코인 거래를 하기 위해 트랜잭션을 생성하고, 각 노드들에 해당 트랜잭션을 전파한다. 각 노드는 해당 트랜잭션이 유효한 거래인지 검증 후 ‘검증된’ 트랜잭션을 mempool에 업데이트 하게 된다.
mempool은 아직 거래가 성립되지 않은, 즉 0 컨펌 상태의 트랜잭션들이 저장되는 공간.
getmempooldescendants
getmempooldescendants txid (verbose)
- txid가 mempool에 있으면 모든 mempool 하위 항목을 반환.
getmempoolentry
getmempoolentry txid
- return : 주어진 트랜잭션에 대한 mempool 데이터를 반환.
getmempoolinfo
- returns : TX 메모리 풀의 활성 상태에 대한 세부 정보를 반환.
- result :
{ “size”: 9, “bytes”: 2694, “usage”: 13824, “maxmempool”: 300000000, “mempoolminfee”: 0.00000000 }
getrawmempool ( verbose )
- return : 메모리 풀에 있는 모든 트랜잭션 id를 스트링의 json array 의 트랜잭션 id들을 반환.
- hint : getmempoolentry를 사용하여 mempool에서 특정 트랜잭션을 가져옵니다.
- result :
bitcoin-testnet~$ bitcoin-cli getrawmempool [ “6fa1e740cdc6fe6b34a2f55dd5acee79dfa2e57e2e1007a9553bf6a2904a4028”, “cdf22cf76c6c6f38b13490d614d7843ad187408267191755091a644fb00fab0b” ]
gettxout “txid” n ( include_mempool )
- return : 사용되지 않은 트랜잭션 출력에 대한 세부 정보를 반환.
gettxoutproof “txid”,…
- return : txid가 블록에 포함된 16진수로 인코딩 된 증명을 반환.
gettxoutsetinfo
- return : 사용되지 않은 트랜잭션 출력 세트에 대한 통계를 리턴. 이 call은 다소 시간이 걸릴 수 있다.
preciousblock “blockhash”
- return : 동일한 작업으로 다른 블록보다 먼저 수신 된 것처럼 처리한다. 나중의 preciousblock 호출은 이전 호출을 무시. preciousblock의 효과는 다시 시작될 때까지 유지 되지 않는다.
pruneblockchain
- result : (numeric) 마지막 블록의 높이를 잘라낸다.
verifychain ( checklevel nblocks )
verifytxoutproof “proof”
getmemoryinfo (“mode”)
- return : 메모리 사용에 관한 정보를 포함한 object 반환.
{ “locked”: { “used”: 66784, “free”: 260896, “total”: 327680, “locked”: 65536, “chunks_used”: 2087, “chunks_free”: 2 } }
stop
- 비트코인 서버를 중지.
uptime
- return : 서버의 전체 가동 시간을 반환.
== Generating ==
generate nblocks ( maxtries )
- 최대 nblocks 블록을 rpc 호출이 반환되기 전에 즉시 지갑의 주소로 보낸다.
generatetoaddress nblocks address (maxtries)
- RPC 호출이 반환되기 전에 지정된 주소로 즉시 블록한다.
Mining 부분
getblocktemplate ( TemplateRequest )
- return : 작업할 블록을 만드는데 필요한 데이터를 반환.
getmininginfo
- return : 마이닝 관련 정보를 담고있는 json 객체.
getnetworkhashps ( nblocks height )
- return : 마지막 n 블록을 기준으로 초당 예상 네트워크 해시를 반환합니다.
prioritisetransaction
- 더 높은(또는 더 낮은) 우선 순위의 마이닝된 블록으로 트랜잭션을 허용.
submitblock “hexdata” ( “dummy” )
- 네트워크에 새 블록을 제출하려고 시도.
== Network ==
addnode “node” “add|remove|onetry”
- addnode목록에서 노드를 추가하거나 제거하려고 시도. 또는 노드에 한 번 연결을 시도.
clearbanned
- 금지된 ip를 모두 지운다.
disconnectnode “[address]” [nodeid]
- 즉시, 지정된 피어 노드에서 연결을 끊는다.
- 엄밀히 말하면 ‘주소’와 ‘노드id’중 하나가 노드를 식별하기 위해 제공될 수 있다.
- nodeid로 연결을 끊으려면 ‘address’를 빈문자열로 설정하거나 명명된 ‘nodeid’인수만 사용하여 호출한다.
getaddednodeinfo ( “node” )
- return : 주어진 추가된 노드 또는 모든 더해진 노드에 대한 정보 반환(onetry addnodes 는 여기에 추가되어 있지 않음).
getconnectioncount
- return : 다른 노드에 대한 연결 수를 반환.
getnettotals
- return : 네트워크 트래픽에 관한 정보를 반환. 여기에는 바이 입력, 바이트 출력, 현재 시간도 포함된다.
- result :
{ “totalbytesrecv”: 138314310, “totalbytessent”: 11219382, “timemillis”: 1528361212857, “uploadtarget”: { “timeframe”: 86400, “target”: 0, “target_reached”: false, “serve_historical_blocks”: true, “bytes_left_in_cycle”: 0, “time_left_in_cycle”: 0 } }
getnetworkinfo
- return : p2p 네트워킹과 연관된 다양한 상태 정보가 포함된 object를 반환.
getpeerinfo
- return : 연결된 각 네트워크 노드에 대한 데이터를 객체의 json 배열로 반환.
listbanned
- 금지된 모든 ip/서브넷을 나열.
ping
- ping을 측정하기 위해 다른 모든 노드에 ping을 보내도록 요청. getpeerinfo, pingtime 및 pingwait 필드에서 제공되는 결과는 10 진수 초이다. ping 명령은 다른 모든 명령과 함께 대기열에서 처리되므로 네트워크 ping뿐만 아니라 처리 백 로그를 측정한다.
setban “subnet” “add|remove” (bantime) (absolute)
- 금지 목록에서 ip/서브넷을 추가하거나 제거하려고 시도.
setnetworkactive true|false
- 모든 p2p 네트워크 활동을 비활성화/활성화 한다.
Test Scenario
목표 : testnet에서, wkim 계좌를 생성하여 2btc 전송하기.
- getblockchaininfo 를 통해 비트코인 네트워크의 노드, 지갑, 잔액 등 블록체인 데이터 베이스 기본 정보 확인.
- 최초 getbalance 확인.
- getnewaddress wkim 로 새 주소 생성
- getbalance wkim 새 계좌 잔고 확인.
- sendtoaddress wkim-address-value 2 송금 실행 (리턴값은 txid)
- listunspent 0 로 ‘미확정된’ 트랜잭션 확인.
(발생한 txid, address에 대한 confirmations = 0, 시간이 좀 지난 후(3~5분) 전송이 되면 confirmations = 1로 바뀐다.) - getbalance 송금 후 전체 잔액확인 (기존 잔액 - 송금액).
- getbalance wkim 수신 금액 확인.
- listunspent 0 로 , txid에 대한 confirmations값이 바뀐걸 확인.
- listtransactions 를 통해 방금 이뤄진 트랜잭션 내역을 확인.
check
- 전체계좌 잔액 :
- 수신계좌 잔액 :
- 새 주소값 :
- 발생한 txid :