OCAP 客戶端透過 GraphQL 與區塊鏈互動。方法分為兩大類:
- 查詢 (Queries):這些是唯讀操作,用於從區塊鏈擷取資料,例如檢索帳戶狀態、列出交易或取得一般鏈資訊。它們不會改變鏈的狀態。
- 變動 (Mutations):這些是會修改區塊鏈狀態的寫入操作。傳送交易是變動的主要範例。
本節提供客戶端所有可用的查詢與變動方法的完整參考。
查詢方法
查詢用於從區塊鏈中檢索資料。以下是所有可用查詢方法的完整列表。
getAccountState
檢索特定帳戶的目前狀態,包括其餘額、nonce 及其他詳細資訊。
參數
- address
string(required) — 要查詢的帳戶地址。 - height
string— 查詢特定區塊高度的狀態。 - keys
string[]— 要檢索的特定欄位。 - traceMigration
boolean— 若為 true,則追蹤帳戶的遷移歷史。
傳回值
- ResponseGetAccountState
object— 一個包含回應碼和帳戶狀態的物件。- code
string— 回應的狀態碼(例如 'OK')。 - state
AccountState— 帳戶的詳細狀態。
- code
getAssetState
檢索特定資產(NFT)的目前狀態。
參數
- address
string(required) — 要查詢的資產地址。 - height
string— 查詢特定區塊高度的狀態。 - keys
string[]— 要檢索的特定欄位。
傳回值
- ResponseGetAssetState
object— 一個包含回應碼和資產狀態的物件。- code
string— 回應的狀態碼。 - state
AssetState— 資產的詳細狀態。
- code
getFactoryState
擷取特定資產工廠的狀態。
參數
- address
string(required) — 要查詢的工廠地址。
傳回值
- ResponseGetFactoryState
object— 一個包含回應碼和工廠狀態的物件。- code
string— 回應的狀態碼。 - state
AssetFactoryState— 資產工廠的詳細狀態。
- code
getDelegateState
檢索委託關係的狀態。
參數
- address
string(required) — 要查詢的委託地址。 - height
string— 查詢特定區塊高度的狀態。 - keys
string[]— 要檢索的特定欄位。
傳回值
- ResponseGetDelegateState
object— 一個包含回應碼和委託狀態的物件。- code
string— 回應的狀態碼。 - state
DelegateState— 委託的詳細狀態。
- code
getTokenState
擷取特定同質化代幣的狀態。
參數
- address
string(required) — 要查詢的代幣地址。
傳回值
- ResponseGetTokenState
object— 一個包含回應碼和代幣狀態的物件。- code
string— 回應的狀態碼。 - state
TokenState— 代幣的詳細狀態。
- code
getEvidenceState
根據其雜湊值檢索證據記錄。
參數
- hash
string(required) — 要檢索的證據的雜湊值。
傳回值
- ResponseGetEvidenceState
object— 一個包含回應碼和證據狀態的物件。- code
string— 回應的狀態碼。 - state
EvidenceState— 證據的詳細狀態。
- code
getForgeState
擷取 OCAP 區塊鏈的整體設定與狀態。
參數
- height
string— 查詢特定區塊高度的狀態。 - keys
string[]— 要檢索的特定欄位。
傳回值
- ResponseGetForgeState
object— 一個包含回應碼和鏈狀態的物件。- code
string— 回應的狀態碼。 - state
ForgeState— OCAP 鏈的詳細狀態。
- code
getTokenFactoryState
檢索特定代幣工廠的狀態。
參數
- address
string(required) — 要查詢的代幣工廠地址。
傳回值
- ResponseGetTokenFactoryState
object— 一個包含回應碼和代幣工廠狀態的物件。- code
string— 回應的狀態碼。 - state
TokenFactoryState— 代幣工廠的詳細狀態。
- code
getTx
根據其雜湊值擷取單一交易。
參數
- hash
string(required) — 要檢索的交易的雜湊值。
傳回值
- ResponseGetTx
object— 一個包含回應碼和交易詳細資訊的物件。- code
string— 回應的狀態碼。 - info
TransactionInfo— 交易的詳細資訊。
- code
getBlock
根據其高度檢索單一區塊。
參數
- height
string(required) — 要檢索的區塊的高度。
傳回值
- ResponseGetBlock
object— 一個包含回應碼和區塊詳細資訊的物件。- code
string— 回應的狀態碼。 - block
BlockInfo— 區塊的詳細資訊。
- code
getBlocks
檢索區塊列表,可選用篩選條件。
參數
- paging
PageInput— 分頁設定。 - heightFilter
RangeFilterInput— 按高度範圍篩選區塊。 - emptyExcluded
boolean— 若為 true,則排除不含交易的區塊。
傳回值
- ResponseGetBlocks
object— 一個包含分頁資訊和區塊列表的物件。- code
string— 回應的狀態碼。 - page
PageInfo— 分頁資訊。 - blocks
BlockInfoSimple[]— 一個簡化區塊物件的陣列。
- code
getUnconfirmedTxs
擷取在記憶體池中但尚未確認的交易。
參數
- paging
PageInput— 分頁設定。
傳回值
- ResponseGetUnconfirmedTxs
object— 一個包含分頁資訊和未確認交易列表的物件。- code
string— 回應的狀態碼。 - page
PageInfo— 分頁資訊。 - unconfirmedTxs
UnconfirmedTxs— 未確認交易的詳細資訊。
- code
getChainInfo
檢索關於區塊鏈的一般資訊。
參數
此方法不接受任何參數。
傳回值
- ResponseGetChainInfo
object— 一個包含回應碼和鏈資訊的物件。- code
string— 回應的狀態碼。 - info
ChainInfo— 鏈的詳細資訊。
- code
getConfig
擷取節點的設定。
參數
- parsed
boolean— 若為 true,則傳回已解析的設定。
傳回值
- ResponseGetConfig
object— 一個包含回應碼和設定的物件。- code
string— 回應的狀態碼。 - config
string— 節點的設定,以字串形式表示。
- code
getNetInfo
檢索網路資訊,包括已連線的對等節點。
參數
此方法不接受任何參數。
傳回值
- ResponseGetNetInfo
object— 一個包含回應碼和網路資訊的物件。- code
string— 回應的狀態碼。 - netInfo
NetInfo— 詳細的網路資訊。
- code
getNodeInfo
檢索關於被查詢的特定節點的資訊。
參數
此方法不接受任何參數。
傳回值
- ResponseGetNodeInfo
object— 一個包含回應碼和節點資訊的物件。- code
string— 回應的狀態碼。 - info
NodeInfo— 關於節點的詳細資訊。
- code
getValidatorsInfo
擷取關於目前驗證者集合的資訊。
參數
此方法不接受任何參數。
傳回值
- ResponseGetValidatorsInfo
object— 一個包含回應碼和驗證者資訊的物件。- code
string— 回應的狀態碼。 - validatorsInfo
ValidatorsInfo— 關於驗證者的詳細資訊。
- code
getForgeStats
檢索關於區塊鏈活動的各種統計數據。
參數
此方法不接受任何參數。
傳回值
- ResponseGetForgeStats
object— 一個包含回應碼和鏈統計數據的物件。- code
string— 回應的狀態碼。 - forgeStats
ForgeStats— 關於 OCAP 鏈的各種統計數據。
- code
listAssetTransactions
列出與特定資產相關的所有交易。
參數
- address
string(required) — 資產的地址。 - paging
PageInput— 分頁設定。
傳回值
- ResponseListAssetTransactions
object— 一個包含分頁資訊和交易列表的物件。- code
string— 回應的狀態碼。 - page
PageInfo— 分頁資訊。 - transactions
IndexedTransaction[]— 一個交易物件的陣列。
- code
listAssets
列出所有資產,可依擁有者或工廠進行篩選。
參數
- paging
PageInput— 分頁設定。 - ownerAddress
string— 按擁有者地址篩選資產。 - factoryAddress
string— 按工廠地址篩選資產。 - timeFilter
TimeFilterInput— 按時間範圍篩選資產。
傳回值
- ResponseListAssets
object— 一個包含分頁資訊和資產列表的物件。- code
string— 回應的狀態碼。 - page
PageInfo— 分頁資訊。 - assets
IndexedAssetState[]— 一個資產狀態物件的陣列。
- code
listBlocks
列出區塊,提供多種篩選選項。
參數
- paging
PageInput— 分頁設定。 - proposer
string— 按提案者地址篩選區塊。 - timeFilter
TimeFilterInput— 按時間範圍篩選區塊。 - heightFilter
RangeFilterInput— 按高度範圍篩選區塊。 - numTxsFilter
RangeFilterInput— 按交易數量篩選區塊。 - numInvalidTxsFilter
RangeFilterInput— 按無效交易數量篩選區塊。
傳回值
- ResponseListBlocks
object— 一個包含分頁資訊和區塊列表的物件。- code
string— 回應的狀態碼。 - page
PageInfo— 分頁資訊。 - blocks
IndexedBlock[]— 一個區塊物件的陣列。
- code
listTopAccounts
列出特定代幣餘額最高的帳戶。
參數
- paging
PageInput— 分頁設定。 - tokenAddress
string— 代幣的地址。若未提供,則預設為原生代幣。 - timeFilter
TimeFilterInput— 按時間範圍篩選帳戶。
傳回值
- ResponseListTopAccounts
object— 一個包含分頁資訊和頂級帳戶列表的物件。- code
string— 回應的狀態碼。 - page
PageInfo— 分頁資訊。 - accounts
IndexedAccountState[]— 一個帳戶狀態物件的陣列。
- code
listTransactions
一個功能強大的方法,能以多種篩選條件列出交易。
參數
- paging
PageInput— 分頁設定。 - timeFilter
TimeFilterInput— 按時間範圍篩選交易。 - addressFilter
AddressFilterInput— 按傳送者或接收者地址篩選交易。 - typeFilter
TypeFilterInput— 按交易類型篩選。 - validityFilter
ValidityFilterInput— 按交易有效性篩選。 - factoryFilter
FactoryFilterInput— 按工廠地址篩選。 - tokenFilter
TokenFilterInput— 按代幣地址篩選。 - assetFilter
AssetFilterInput— 按資產地址篩選。 - accountFilter
AccountFilterInput— 按帳戶地址篩選。 - txFilter
TxFilterInput— 按交易雜湊值篩選。 - rollupFilter
RollupFilterInput— 按 rollup 地址篩選。 - stakeFilter
StakeFilterInput— 按質押地址篩選。 - delegationFilter
DelegationFilterInput— 按委託地址篩選。 - tokenFactoryFilter
TokenFactoryFilterInput— 按代幣工廠地址篩選。
傳回值
- ResponseListTransactions
object— 一個包含分頁資訊和交易列表的物件。- code
string— 回應的狀態碼。 - page
PageInfo— 分頁資訊。 - transactions
IndexedTransaction[]— 一個交易物件的陣列。
- code
listTokens
列出鏈上所有的同質化代幣。
參數
- paging
PageInput— 分頁設定。 - issuerAddress
string— 按發行者地址篩選代幣。 - timeFilter
TimeFilterInput— 按時間範圍篩選代幣。
傳回值
- ResponseListTokens
object— 一個包含分頁資訊和代幣列表的物件。- code
string— 回應的狀態碼。 - page
PageInfo— 分頁資訊。 - tokens
IndexedTokenState[]— 一個代幣狀態物件的陣列。
- code
listFactories
列出鏈上所有的資產工廠。
參數
- paging
PageInput— 分頁設定。 - ownerAddress
string— 按擁有者地址篩選工廠。 - addressList
string[]— 要查詢的工廠地址列表。 - timeFilter
TimeFilterInput— 按時間範圍篩選工廠。
傳回值
- ResponseListFactories
object— 一個包含分頁資訊和工廠列表的物件。- code
string— 回應的狀態碼。 - page
PageInfo— 分頁資訊。 - factories
IndexedFactoryState[]— 一個工廠狀態物件的陣列。
- code
getAccountTokens
檢索特定帳戶的代幣餘額。
參數
- address
string(required) — 帳戶的地址。 - token
string— 要查詢的特定代幣地址。
傳回值
- ResponseGetAccountTokens
object— 一個包含回應碼和帳戶代幣列表的物件。- code
string— 回應的狀態碼。 - tokens
AccountToken[]— 一個代幣餘額物件的陣列。
- code
getStakeState
擷取特定質押的狀態。
參數
- address
string(required) — 要查詢的質押地址。 - height
string— 查詢特定區塊高度的狀態。 - keys
string[]— 要檢索的特定欄位。
傳回值
- ResponseGetStakeState
object— 一個包含回應碼和質押狀態的物件。- code
string— 回應的狀態碼。 - state
StakeState— 質押的詳細狀態。
- code
listStakes
列出所有質押記錄,可選用篩選條件。
參數
- paging
PageInput— 分頁設定。 - addressFilter
AddressFilterInput— 按傳送者或接收者地址篩選質押。 - timeFilter
TimeFilterInput— 按時間範圍篩選質押。 - assetFilter
AssetFilterInput— 按資產地址篩選質押。
傳回值
- ResponseListStakes
object— 一個包含分頁資訊和質押列表的物件。- code
string— 回應的狀態碼。 - page
PageInfo— 分頁資訊。 - stakes
IndexedStakeState[]— 一個質押狀態物件的陣列。
- code
getRollupState
檢索特定 rollup 的狀態。
參數
- address
string(required) — 要查詢的 rollup 地址。 - height
string— 查詢特定區塊高度的狀態。 - keys
string[]— 要檢索的特定欄位。
傳回值
- ResponseGetRollupState
object— 一個包含回應碼和 rollup 狀態的物件。- code
string— 回應的狀態碼。 - state
RollupState— rollup 的詳細狀態。
- code
listRollups
列出鏈上所有的 rollup。
參數
- paging
PageInput— 分頁設定。 - tokenAddress
string— 按代幣地址篩選 rollup。 - foreignTokenAddress
string— 按外部代幣地址篩選 rollup。 - timeFilter
TimeFilterInput— 按時間範圍篩選 rollup。
傳回值
- ResponseListRollups
object— 一個包含分頁資訊和 rollup 列表的物件。- code
string— 回應的狀態碼。 - page
PageInfo— 分頁資訊。 - rollups
IndexedRollupState[]— 一個 rollup 狀態物件的陣列。
- code
getRollupBlock
從 rollup 側鏈擷取特定區塊。
參數
- hash
string— rollup 區塊的雜湊值。 - height
string— rollup 區塊的高度。 - rollupAddress
string(required) — rollup 的地址。
傳回值
- ResponseGetRollupBlock
object— 一個包含回應碼和 rollup 區塊的物件。- code
string— 回應的狀態碼。 - block
RollupBlock— rollup 區塊的詳細資訊。
- code
listRollupBlocks
列出 rollup 側鏈的區塊。
參數
- paging
PageInput— 分頁設定。 - rollupAddress
string(required) — rollup 的地址。 - tokenAddress
string— 按代幣地址篩選。 - proposer
string— 按提案者地址篩選。 - validatorFilter
ValidatorFilterInput— 按驗證者篩選。 - txFilter
TxFilterInput— 按交易雜湊值篩選。 - timeFilter
TimeFilterInput— 按時間範圍篩選。
傳回值
- ResponseListRollupBlocks
object— 一個包含分頁資訊和 rollup 區塊列表的物件。- code
string— 回應的狀態碼。 - page
PageInfo— 分頁資訊。 - blocks
IndexedRollupBlock[]— 一個 rollup 區塊物件的陣列。
- code
listRollupValidators
列出特定 rollup 的驗證者。
參數
- paging
PageInput— 分頁設定。 - rollupAddress
string(required) — rollup 的地址。
傳回值
- ResponseListRollupValidators
object— 一個包含分頁資訊和 rollup 驗證者列表的物件。- code
string— 回應的狀態碼。 - page
PageInfo— 分頁資訊。 - validators
IndexedRollupValidator[]— 一個 rollup 驗證者物件的陣列。
- code
listDelegations
列出所有委託記錄。
參數
- paging
PageInput— 分頁設定。 - from
string— 按委託人地址篩選。 - to
string— 按受託人地址篩選。 - timeFilter
TimeFilterInput— 按時間範圍篩選。
傳回值
- ResponseListDelegations
object— 一個包含分頁資訊和委託列表的物件。- code
string— 回應的狀態碼。 - page
PageInfo— 分頁資訊。 - delegations
IndexedDelegationState[]— 一個委託狀態物件的陣列。
- code
search
對帳戶、資產或交易進行關鍵字搜尋。
參數
- paging
PageInput— 分頁設定。 - keyword
string(required) — 要搜尋的關鍵字。
傳回值
- ResponseSearch
object— 一個包含分頁資訊和搜尋結果的物件。- code
string— 回應的狀態碼。 - page
PageInfo— 分頁資訊。 - results
SearchResult[]— 一個搜尋結果物件的陣列。
- code
estimateGas
估算交易所需的 gas。
參數
- typeUrl
string(required) — 交易的類型 URL。 - tx
string(required) — 已編碼的交易字串。
傳回值
- ResponseEstimateGas
object— 一個包含回應碼和 gas 估算值的物件。- code
string— 回應的狀態碼。 - estimate
GasEstimate— 估算的 gas。
- code
listTokenFlows
追蹤帳戶之間的代幣流動。
參數
- paging
PageInput— 分頁設定。 - accountAddress
string(required) — 要追蹤的帳戶地址。 - tokenAddress
string— 要追蹤的代幣地址。 - depth
number— 追蹤的深度。 - direction
TokenFlowDirection— 流動的方向(IN 或 OUT)。
傳回值
- ResponseListTokenFlows
object— 一個包含分頁資訊和代幣流動資料的物件。- code
string— 回應的狀態碼。 - page
PageInfo— 分頁資訊。 - data
IndexedTokenFlow[]— 一個代幣流動物件的陣列。
- code
verifyAccountRisk
評估指定帳戶的風險狀況。
參數
- accountAddress
string(required) — 要驗證的帳戶地址。 - tokenAddress
string— 用於上下文的代幣地址。
傳回值
- ResponseVerifyAccountRisk
object— 一個包含回應碼和風險驗證結果的物件。- code
string— 回應的狀態碼。 - data
VerifyAccountRiskResult— 風險驗證的結果。
- code
getTokenDistribution
檢索指定代幣的分佈統計數據。
參數
- tokenAddress
string(required) — 代幣的地址。
傳回值
- ResponseGetTokenDistribution
object— 一個包含回應碼和代幣分佈資料的物件。- code
string— 回應的狀態碼。 - data
TokenDistribution— 代幣分佈統計數據。
- code
listTokenFactories
列出鏈上所有的代幣工廠。
參數
- paging
PageInput— 分頁設定。 - tokenAddress
string— 按代幣地址篩選。 - reserveAddress
string— 按儲備代幣地址篩選。 - owner
string— 按擁有者地址篩選。 - timeFilter
TimeFilterInput— 按時間範圍篩選。
傳回值
- ResponseListTokenFactories
object— 一個包含分頁資訊和代幣工廠列表的物件。- code
string— 回應的狀態碼。 - page
PageInfo— 分頁資訊。 - tokenFactories
IndexedTokenFactoryState[]— 一個代幣工廠狀態物件的陣列。
- code
變動方法
變動用於傳送會修改區塊鏈狀態的交易。
sendTx
將預先簽署的交易廣播到網路。這是所有寫入操作的基礎方法。關於建立和簽署交易,請參閱 高階 API 和 交易生命週期 指南。
參數
- tx
string(required) — 已編碼的交易字串。 - wallet
object(required) — 用於簽署的錢包物件。 - token
string— 驗證權杖(如果需要)。 - commit
boolean(default:true) — 若為 true,則等待交易被提交到區塊中。 - extra
string— 要包含的額外資料。
傳回值
- ResponseSendTx
object— 一個包含回應碼和交易雜湊值的物件。- code
string— 回應的狀態碼。 - hash
string— 已提交交易的雜湊值。
- code
範例
// 此範例假設 `signedTx` 是一個經過適當編碼和簽署的交易字串。
// 關於如何建立它,請參閱其他指南。
const signedTx = '...';
const wallet = { ... }; // 簽署此交易的錢包
try {
const { hash } = await client.sendTx({ tx: signedTx, wallet });
console.log('Transaction sent successfully! Hash:', hash);
} catch (error) {
console.error('Failed to send transaction:', error);
}