본문으로 건너뛰기

Locus JSON-RPC

JSON RPC가 무엇일까요?

JSON-RPC는 클라이언트가 JSON 형식의 요청 메시지를 노드에 전송하여 노드는 이를 처리하고 결과를 JSON 형식의 응답 메시지로 반환합니다.

원격 프로시저 호출(Remote Procedure Call) 프로토콜의 약자로써, 통신을 위한 방식입니다.

로커스체인 RPC

LocusChain 노드는 JSON-RPC API를 제공합니다. 개인이 실행하거나 몇몇의 공적인 서비스로 제공되는 노드를 통해 사용자는 쉽게 블록체인 네트워크의 정보를 조회할 수 있습니다.

함수 목록


locus_echo

RPC 호출에 대해 노드가 응답을 잘 하는지 확인하는 용도로 사용할 수 있습니다.
입력값에 현재 시간을 추가하여 응답합니다.

Request

KeyTypeDescription
-string문자열

Response

KeyTypeDescription
-string입력 문자열 + 현재 시간

locus_getSyncState

노드의 현재 동기화 상태를 구합니다.

Request

[없음]

Response

KeyTypeDescription
SyncStatestringNODE_STATE_IN_INIT
NODE_STATE_IN_SYNC
NODE_STATE_IN_RESYNC
NODE_STATE_SYNC_COMPLETE
NODE_STATE_STABLE
Unknown NodeState

locus_getGenesisAccount

제네시스 계정의 주소를 구합니다.

Request

[없음]

Response

KeyTypeDescription
Genesisbase32제네시스 계정의 주소

locus_openAccount

계정을 로커스체인 네트워크에 등록합니다.

Request

KeyTypeDescription
Accountbase32대상 계정 주소
Senderbase32코인을 보낸 계정
Indexint코인을 보낸 Tx의 height
Pkbase32Normal public key
KeySignbase32Master public key
Sigbase64서명

Response

KeyTypeDescription
Hashbase64Tx Hash
Txstring생성된 Tx
Successbool성공 여부

locus_becomeHost

지정한 계정을 해당 노드의 호스트로 설정합니다. 지정한 계정은 게스트가 없어야 하고, 해당 노드는 호스트가 없는 빈 노드여야 합니다.

Request

KeyTypeDescription
Accountbase32호스트가 될 계정
Sigbase64서명

Response

KeyTypeDescription
Hashbase64Tx Hash
Txstring생성된 Tx
Successbool성공 여부

locus_becomeGuest

지정한 계정을 해당 노드의 게스트로 설정합니다. 지정한 계정은 게스트가 없어야 하고, 해당 노드는 호스트가 존재해야 합니다.

Request

KeyTypeDescription
Accountbase32게스트가 될 계정
Sigbase64서명

Response

KeyTypeDescription
Hashbase64Tx Hash
Txstring생성된 Tx
Successbool성공 여부

locus_changeKey

계정의 노말키를 변경합니다.

Request

KeyTypeDescription
Accountbase32키를 변경할 계정
MasterPkeybase32Master public key
NewNormalPkeybase32New Normal public key
SignByMasterKeybase64New Normal public key를 Master public key로 서명한 값
Sigbase64서명

Response

KeyTypeDescription
Hashbase64Tx Hash
Txstring생성된 Tx
Successbool성공 여부

locus_transferCoin

코인을 다른 계정에 보냅니다.

Request

KeyTypeDescription
Frombase32보내는 계정
Tobase32받는 계정
Amountstring보낼 수량
Sigbase64서명

Response

KeyTypeDescription
Hashbase64Tx Hash
Txstring생성된 Tx
Successbool성공 여부

locus_getTx

계정의 특정 Height의 Tx 정보를 구합니다.

Request

KeyTypeDescription
Accountbase32계정
Heightint계정의 Height

Response

KeyTypeDescription
TxstringTx 정보

locus_getAccountsHeights

계정들의 Height 목록을 구합니다.

Request

KeyTypeDescription
Accounts[]base32Height를 구하고자 하는 계정 목록

Response

KeyTypeDescription
Heights[]stringHeight 값은 파라메트의 계정 순서와 동일

locus_getAccountHistory

계정의 Tx 목록을 구합니다.

Request

KeyTypeDescription
Accountbase32계정
Heightint구하고자 하는 시작 Height
Height가 -1이면, 최상위 Tx 부터.
Countint구하고자 하는 Tx 갯수 (시작 위치에서 이전 몇개)

Response

KeyTypeDescription
Txs[]stringTx string list

locus_getAccountDetail

계정의 상세정보를 구합니다.

Request

KeyTypeDescription
Accountbase32계정

Response

KeyTypeDescription
IdentitystringHost : 해당 노드의 호스트 계정
Guest : 해당 노드의 게스트 계정
Neighbor : 해당 노드가 속한 샤드의 이웃 계정. 질의 당시의 상태이며, 동기 상태에 따라서 부정확한 값일 수도 있다.
no identity : 위의 것에 아무 것도 해당되지 않음, 즉 존재하지 않거나, 다른 샤드에 속했거나
FromNoAliveboolOpenAccount 를 했지만, 아직 합의에 포함되지 않은 경우에 이 flag 가 true 가 된다.
Balancestring보유한 로커스 코인
UnactBalancestring아직은 Activate 되지 않아 사용할 수 없는 Balance
Representativebase32위임한 계정 (Host 계정)
Grantuint64보유한 Grant
PublickKeybase32계정의 Normal public key
TxChainHeightint계정의 Height
TxLinkstring마지막 Tx link

locus_getWorldRoundStatesList

World Round State (WRS) 목록을 구합니다.

Request

KeyTypeDescription
Roundint구하고자 하는 시작 Round
Countint구하고자 하는 갯수 (시작 위치에서 이전 몇개), Max 500.

Response

KeyTypeDescription
NextRoundList[]intWRS 목록

locus_getWorldRoundState

World Round State (WRS) 상세 정보를 구합니다.

Request

KeyTypeDescription
Roundint구하고자 하는 Round

Response

KeyTypeDescription
NextRoundintRound
AddShardRoundint0 : 샤드 분할 예정 없음.
1 : 샤드 분할해야 하는 상황이지만, 언제인지 정해지지 않았음.
2 이상 : 해당 Round에 샤드 분할 예정됨.
RootHashstring
EvictedHashstring
CurrentHashstring
PrevLinkstring
PrevNextRoundint
SigHashstring아래 서명 정보의 해시값. 아래의 서명 정보는 프루닝 될 수 있다.
ValidatorsWeightintValidator의 Weight 총합
Validators[]{base32,uint16,string}{Validator's Addr, Weight, Sign}
MultiSignstring멀티서명
AggregatedNoncestring멀티서명의 aggregated nonce
CoSigners[]base32멀티서명 참가자의 계정

locus_getInactivateTxList

계정의 아직 Activate되지 않은 Tx 목록을 구합니다.

Request

KeyTypeDescription
Accountbase32계정

Response

KeyTypeDescription
TimeOutTxs[]{Sender base32, Index int32, Tx string}1차 Target 이 Activation 하지 않아, Time out 되어 들어온 Tx 목록.
Txs[]{Sender base32, Index int32, Tx string}Sender 쪽의 합의가 완료된 Tx 목록.
UnconfirmedTxs[]{Sender base32, Index int32, Tx string}Sender 쪽의 합의를 대기중인 Tx 목록.
PendingTxs[]{Sender base32, Index int32, Tx string}Propose 된지 10초 미만의 Tx 목록.
ConflictedTxs[]{Sender base32, Index int32, Tx string}충돌난 Tx 목록.

locus_getMontInfoList

계정의 Mont(MOnitoring seNT) 목록을 구합니다. 노드의 호스트/게스트 계정의 것만 구할 수 있습니다.

Request

KeyTypeDescription
Accountbase32계정

Response

KeyTypeDescription
ActivatedTxs[]{Index int32, Tx string}Receiver쪽 샤드의 Recv list 에 포함되어 합의가 완료된 Tx 목록. 아직 Receiver의 체인에 write 되지 않았을 수도 있음.
ProofedTxs[]{Index int32, Tx string}Sender 쪽의 합의가 완료된 Tx 목록.
PendingTxs[]{Index int32, Tx string}Propose만 된 Tx 목록.

locus_createToken

시스템 토큰을 생성합니다.
계정당 하나의 시스템 토큰을 생성할 수 있습니다.

Request

KeyTypeDescription
Accountbase32토큰을 생성할 계정
TokenBalancestring생성할 토큰 갯수
Sigbase64서명

Response

KeyTypeDescription
TokenIDbase32생성된 토큰 ID
HashTx Hash
Txstring생성된 Tx
Successbool성공 여부

locus_transferToken

토큰을 다른 계정에 보냅니다.

Request

KeyTypeDescription
Frombase32토큰을 보내는 계정
Tobase32토큰을 받을 계정
Amountstring보낼 토큰 갯수
TokenIDbase32보낼 토큰 ID
Sigbase64서명

Response

KeyTypeDescription
HashTx Hash
Txstring생성된 Tx
Successbool성공 여부

locus_getAccountTokenList

계정이 소유한 토큰 목록과 Balance를 구합니다.

Request

KeyTypeDescription
Accountbase32토큰을 생성할 계정

Response

KeyTypeDescription
TokenListmap[base32]string{"TokenID": Balance}

locus_hasSystemToken

계정이 생성한 시스템 토큰이 존재하는 여부와 존재하면 토큰 ID를 구합니다.

Request

KeyTypeDescription
Accountbase32계정

Response

KeyTypeDescription
Havingbool시스템 토큰이 존재하는지 여부
TokenIDstringHaving 이 true 이면, 시스템 토큰 ID를 돌린다.

locus_postData

데이터를 게시합니다.

Request

KeyTypeDescription
Accountbase32계정
Labelint체인 내에서 같은 라벨의 Tx끼리 링크됨.
해당 Tx에 대해 Proof를 Verify할 때 같은 라벨의 더 최신의 Tx가 있는지를 확인하는 용도로 사용됨.
Database64게시할 데이터
Sigbase64서명

Response

KeyTypeDescription
HashTx Hash
Txstring생성된 Tx
Successbool성공 여부

locus_readTxListWithProof

계정의 Tx 목록과 Proof를 함께 구합니다.

Request

KeyTypeDescription
Accountbase32계정
BaseHeightint시작 Height
Countuint구하고자 하는 갯수 (시작 위치에서 이전 몇개)

Response

KeyTypeDescription
Accountbase32계정
Txs[]stringTx string 목록
ProofMerkleProof요청한 Tx 목록의 Merkle Proof
CheckRoundP1intProof 가 생성된 Round + 1

locus_verifyTxListWithProof

Tx 목록의 Proof를 검증합니다.

Request

KeyTypeDescription
Accountbase32계정
Txs[]string검증할 Tx 목록
ProofMerkleProof검증할 Tx 목록의 Merkle Proof
CheckRoundP1intproof 가 생성된 Round + 1

Response

KeyTypeDescription
-bool검증 성공 여부

locus_generateLatestStoredDataProof

특정 label의 TxPostData가 가장 최신인지 증명하는 Proof를 생성합니다.

Request

KeyTypeDescription
Accountbase32계정
BaseHeightintProof를 생성할 첫번째 TxPostData의 height

Response

KeyTypeDescription
Accountbase32계정
CheckRoundP1intLatestProof 가 생성된 Round + 1
TxstringProof 의 대상이 된 TxPostData
TxProofMerkleProofTx의 존재에 대한 proof
LatestProofMerkleProofMultiTx가 최신 StoredDataHash에 포함되어 있다는 Proof
LatestTxs[]string마지막 TxPostData 이후에 다른 TxPostData가 없음을 증명
LatestTxsProofMerkleProofLatestTxs의 존재에 대한 Proof
SummaryDataHashbase64Ledger 안에 TxPostData가 없거나 Tx가 하나도 없는 경우, Summary의 Data Hash
SummaryTxLinkbase64Ledger 안에 TxPostData가 없거나 Tx가 하나도 없는 경우, Summary의 Tx Link

locus_verifyLatestStoredDataProof

locus_generateLatestStoredDataProof RPC로 생성한 Proof를 검증합니다.

Request

KeyTypeDescription
ValidityRoundint해당 Proof 가 유효한 Round 수
0 이면, 생성된 그 Round에서만 유효하다.
1 이면, 생성된 Round와 그 다음 Round까지 유효하다.
n 이면, 생성된 Round +n Round 까지 유효한다.
Accountbase32Tx 목록의 Proof를 생성할 계정
CheckRoundP1intLatestProof가 생성된 Round + 1
TxstringProof의 대상이 된 TxPostData
TxProofMerkleProofTx의 존재에 대한 Proof
LatestProofMerkleProofMultiTx가 최신 StoredDataHash에 포함되어 있다는 Proof
LatestTxs[]string마지막 TxPostData 이후에 다른 TxPostData가 없음을 증명
LatestTxsProofhexLatestTxs 의 존재에 대한 Proof
SummaryDataHashhexLedger 안에 TxPostData가 없거나 Tx가 하나도 없는 경우, Summary의 Data Hash
SummaryTxLinkhexLedger 안에 TxPostData가 없거나 Tx가 하나도 없는 경우, Summary의 Tx Link

Response

KeyTypeDescription
-bool검증 성공 여부

locus_lockStake

Stake를 Lock합니다.

Request

KeyTypeDescription
Accountbase32계정
LockAmountuint32Lock할 Stake 수량 (1 UnitStakeLock = 100 Locus)
Sigbase64서명

Response

KeyTypeDescription
HashTx Hash
Txstring생성된 Tx
Successbool성공 여부

locus_unlockStake

Stake를 unlock합니다.

Request

KeyTypeDescription
Accountbase32계정
UnlockAmountuint32Unlock할 Stake (1 UnitStakeLock = 100 Locus)
Sigbase64서명

Response

KeyTypeDescription
HashTx Hash
Txstring생성된 Tx
Successbool성공 여부

locus_provideScript

Core Script를 배포합니다.

Request

KeyTypeDescription
Providerbase32배포할 계정
Targetbase32Time lock 이내에 Core script를 실행하여, provider가 send한 coin 이나 token을 activation할 계정
TargetAfterTimeLockbase32Time lock 이후에 provider가 send한 coin 이나 token을 자동으로 activation할 계정
TimeLockintTime lock 이 걸리는 round duration, 현재 Max = 30, Min = 3 으로 설정되어 있음.
Args[]hexTarget이 provider의 script (ScriptSig)를 실행할 때, 사용될 아규먼트, 최대 4개까지 입력가능.
ScriptProvidehexTarget이 실행할 provider의 script, 현재 MaxSize = 32 bytes
ScriptAccepthexTarget이 실행할 target의 script, 현재 MaxSize = 32 bytes
AmountstringTarget이 Core script 실행에 성공할 경우, activation 시킬 수 있는 coin amount
TokenAmounts[]{TokenID base32, AmountToken string}Target이 Core script 실행에 성공할 경우, activation 시킬 수 있는 token amounts
Sigbase64서명

Response

KeyTypeDescription
HashTx Hash
Txstring생성된 Tx
Successbool성공 여부

locus_acceptScript

Core Script를 실행합니다.

Request

KeyTypeDescription
Acceptorbase32TxProvideScript에서 Target으로 지정된, Core Script를 activation 시킬 계정
Time lock 이내에만 activation이 가능함.
Providerbase32TxProvideScript를 배포한 계정
IndexintLeadTx(TxProvideScript)의 height
Args[]hexTarget이 Target의 script (ScriptSig)를 실행할 때 사용될 아규먼트., 최대 4개까지 입력가능.
Sigbase64서명

Response

KeyTypeDescription
HashTx Hash
Txstring생성된 Tx
Successbool성공 여부

locus_queryAddress

Key Address로 Full Address를 조회합니다.

Request

KeyTypeDescription
Addrbase32Key Address

Response

KeyTypeDescription
Addrbase32Full Address