# ChainMaker Nodejs SDK 鎺ュ彛璇存槑 ## 姒傝堪 `SDK`鏄笟鍔℃ā鍧椾笌闀垮畨閾句氦浜掔殑妗ユ锛屾敮鎸佸弻鍚慲TLS`璁よ瘉锛屾彁渚涘畨鍏ㄥ彲闈犵殑鍔犲瘑閫氫俊淇¢亾銆� 鎻愪緵鐨勬帴鍙o紝瑕嗙洊鍚堢害绠$悊銆侀摼閰嶇疆绠$悊銆佽瘉涔︾鐞嗐€佸绛炬敹闆嗐€佸悇绫绘煡璇㈡搷浣溿€佷簨浠惰闃呫€佹暟鎹綊妗g瓑鍦烘櫙锛屾弧瓒充簡涓嶅悓鐨勪笟鍔″満鏅渶瑕併€� ## 绾﹀畾姒傚康 - **`Node`锛堣妭鐐癸級**锛氫唬琛ㄤ竴涓摼鑺傜偣鐨勫熀鏈俊鎭紝鍖呮嫭锛氳妭鐐瑰湴鍧€銆佽繛鎺ユ暟銆佹槸鍚﹀惎鐢╜TLS`璁よ瘉绛変俊鎭� - **`ChainClient`锛堥摼瀹㈡埛绔級**锛氭墍鏈夊鎴风瀵归摼鑺傜偣鐨勬搷浣滄帴鍙i兘鏉ヨ嚜`ChainClient` - **鍘嬬缉璇佷功**锛氬彲浠ヤ负`ChainClient`寮€鍚瘉涔﹀帇缂╁姛鑳斤紝寮€鍚悗鍙互鍑忓皬浜ゆ槗鍖呭ぇ灏忥紝鎻愬崌澶勭悊鎬ц兘 ## 1 鐢ㄦ埛鍚堢害鎺ュ彛 ### 1.1 鍒涘缓鍚堢害寰呯鍚峱ayload鐢熸垚 **绫诲悕** - userContractMgr **鍙傛暟璇存槑** 绫诲瀷锛歬-v Object瀵硅薄 - contractName: 鍚堢害鍚�(string) - contractVersion: 鐗堟湰鍙�(string) - runtimeType: 鍚堢害杩愯鐜(number) - contractFilePath: 鍚堢害浜岃繘鍒舵枃浠惰矾寰�(string) - params: 鍚堢害鍒濆鍖栧弬鏁帮紝(k-v Object瀵硅薄) ```javascript createContractCreatePayload({ contractName, contractVersion, runtimeType, contractFilePath, params }) ``` ### 1.2 鍗囩骇鍚堢害寰呯鍚峱ayload鐢熸垚 **绫诲悕** - userContractMgr **鍙傛暟璇存槑** 绫诲瀷锛歬-v Object瀵硅薄 - contractName: 鍚堢害鍚�(string) - contractVersion: 鐗堟湰鍙�(string) - runtimeType: 鍚堢害杩愯鐜(number) - contractFilePath: 鍚堢害浜岃繘鍒舵枃浠惰矾寰�(string) - params: 鍚堢害鍗囩骇鍙傛暟锛�(k-v Object瀵硅薄) ```javascript createContractUpgradePayload({ contractName, contractVersion, runtimeType, contractFilePath, params }) ``` ### 1.3 鍐荤粨鍚堢害payload鐢熸垚 **绫诲悕** - userContractMgr **鍙傛暟璇存槑** 绫诲瀷锛歬-v Object瀵硅薄 - contractName: 鍚堢害鍚�(string) ```javascript createContractFreezePayload({ contractName }) ``` ### 1.4 瑙e喕鍚堢害payload鐢熸垚 **绫诲悕** - userContractMgr **鍙傛暟璇存槑** 绫诲瀷锛歬-v Object瀵硅薄 - contractName: 鍚堢害鍚�(string) ```javascript createContractUnfreezePayload({ contractName }) ``` ### 1.5 鍚婇攢鍚堢害payload鐢熸垚 **绫诲悕** - userContractMgr **鍙傛暟璇存槑** 绫诲瀷锛歬-v Object瀵硅薄 - contractName: 鍚堢害鍚�(string) ```javascript createContractRevokePayload({ contractName }) ``` ### 1.6 鍚堢害绠$悊鑾峰彇Payload绛惧悕 **绫诲悕** - userContractMgr **鍙傛暟璇存槑** - payload: 寰呯鍚峱ayload - userInfoList: 闇€瑕佺鍚嶇殑鐢ㄦ埛鍒楄〃锛坅rray[class UserInfo]锛� ```javascript signContractManagePayload(payload, userInfoList) ``` ### 1.7 鍚堢害绠$悊Payload绛惧悕鏀堕泦&鍚堝苟 **绫诲悕** - userContractMgr **鍙傛暟璇存槑** - signedPayloadBytesArray: 宸茬鍚峱ayload鍒楄〃(array[payloadBytes]) ```javascript mergeContractManageSignedPayload(signedPayloadBytesArray) ``` ### 1.8 鍙戦€佸悎绾︾鐞嗚姹傦紙鍒涘缓銆佹洿鏂般€佸喕缁撱€佽В鍐汇€佸悐閿€锛� **绫诲悕** - userContractMgr **鍙傛暟璇存槑** - mergedPayload: 澶氱缁撴灉 - withSyncResult: 鏄惁鍚屾鑾峰彇缁撴灉锛坆oolean锛� ```javascript async sendContractManageRequest(mergedPayload, withSyncResult) ``` ### 1.9 鍚堢害璋冪敤 **绫诲悕** - callUserContract **鍙傛暟璇存槑** 绫诲瀷锛歬-v Object瀵硅薄 - contractName: 鍚堢害鍚嶇О(string) - method: 鍚堢害鏂规硶(string) - params: 鍚堢害鍙傛暟(k-v Object瀵硅薄) - withSyncResult: 鏄惁鍚屾鑾峰彇缁撴灉锛坆oolean锛� ```javascript async invokeUserContract({ contractName, method, params, withSyncResult }) ``` ### 1.10 鍚堢害鏌ヨ鎺ュ彛璋冪敤 **绫诲悕** - callUserContract **鍙傛暟璇存槑** 绫诲瀷锛歬-v Object瀵硅薄 - contractName: 鍚堢害鍚嶇О(string) - method: 鍚堢害鏂规硶(string) - params: 鍚堢害鍙傛暟(k-v Object瀵硅薄) ```javascript async queryContract({ contractName, method, params }) ``` ### 1.11 鏋勯€犲緟鍙戦€佷氦鏄撲綋 **绫诲悕** - callUserContract **鍙傛暟璇存槑** - contractName: 鍚堢害鍚嶇О(string) - method: 鍚堢害鏂规硶(string) - params: 鍚堢害鍙傛暟(k-v Object瀵硅薄) ```javascript getTxRequest(contractName, method, params) ``` ### 1.12 鍙戦€佸凡鏋勯€犲ソ鐨勪氦鏄撲綋 **绫诲悕** - callUserContract **鍙傛暟璇存槑** - request: 宸叉瀯閫犲ソ鐨勪氦鏄撲綋 - txId: getTxRequest鏂规硶鐨勮繑鍥炲€� - withSyncResult: 鏄惁鍚屾鑾峰彇缁撴灉(boolean) ```javascript async sendTxRequest(request, txId, withSyncResult) ``` ## 2 绯荤粺鍚堢害鎺ュ彛 ### 2.1 鏍规嵁浜ゆ槗Id鏌ヨ浜ゆ槗 **绫诲悕** - callSystemContract **鍙傛暟璇存槑** - txId: 浜ゆ槗ID(string) ```javascript async getTxByTxId(txId) ``` ### 2.2 鏍规嵁鍖哄潡楂樺害鏌ヨ鍖哄潡 **绫诲悕** - callSystemContract **鍙傛暟璇存槑** - blockHeight: 鍖哄潡楂樺害,鑻ヤ负-1锛屽皢杩斿洖鏈€鏂板尯鍧�(number) - withRWSet: 鏄惁杩斿洖璇诲啓闆�(boolean) ```javascript async getBlockByHeight(blockHeight, withRWSet) ``` ### 2.3 鏍规嵁鍖哄潡鍝堝笇鏌ヨ鍖哄潡 **绫诲悕** - callSystemContract **鍙傛暟璇存槑** - blockHash: 鍖哄潡鍝堝笇(string) - withRWSet: 鏄惁杩斿洖璇诲啓闆�(boolean) ```javascript async getBlockByHash(blockHash, withRWSet) ``` ### 2.4 鏍规嵁浜ゆ槗Id鏌ヨ鍖哄潡 **绫诲悕** - callSystemContract **鍙傛暟璇存槑** - txId: 浜ゆ槗ID(string) - withRWSet: 鏄惁杩斿洖璇诲啓闆�(boolean) ```javascript async getBlockByTxId(txId, withRWSet) ``` ### 2.5 鏌ヨ鏈€鏂扮殑閰嶇疆鍧� **绫诲悕** - callSystemContract **鍙傛暟璇存槑** - withRWSet: 鏄惁杩斿洖璇诲啓闆�(boolean) ```javascript async getLastConfigBlock(withRWSet) ``` ### 2.6 鏌ヨ鑺傜偣鍔犲叆鐨勯摼淇℃伅 **绫诲悕** - callSystemContract **鍙傛暟璇存槑** - nodeAddr: 鑺傜偣鍦板潃,濡�127.0.0.1(string) ```javascript async getNodeChainList(nodeAddr) ``` ### 2.7 鏌ヨ閾句俊鎭� **绫诲悕** - callSystemContract **鍙傛暟璇存槑** - 鍖呮嫭锛氬綋鍓嶉摼鏈€鏂伴珮搴︼紝閾捐妭鐐逛俊鎭� ```javascript async getChainInfo() ``` ### 2.8 鏍规嵁浜ゆ槗Id鑾峰彇鍖哄潡楂樺害 **绫诲悕** - callSystemContract **鍙傛暟璇存槑** - txId: 浜ゆ槗ID(string) ```javascript async getBlockHeightByTxId(txId) ``` ### 2.9 鏍规嵁鍖哄潡Hash鑾峰彇鍖哄潡楂樺害 **绫诲悕** - callSystemContract **鍙傛暟璇存槑** - blockHash: 鍖哄潡鍝堝笇(string) ```javascript async getBlockHeightByHash(blockHash) ``` ### 2.10 鏌ヨ褰撳墠鏈€鏂板尯鍧楅珮搴� **绫诲悕** - callSystemContract **鍙傛暟璇存槑** - 杩斿洖褰撳墠鏈€鏂板尯鍧楅珮搴� ```javascript async getCurrentBlockHeight() ``` ### 2.11 鏍规嵁鍖哄潡楂樺害鏌ヨ鍖哄潡澶� **绫诲悕** - callSystemContract **鍙傛暟璇存槑** - blockHeight: 鍖哄潡楂樺害(number) ```javascript async getBlockHeaderByHeight(blockHeight) ``` ### 2.12 鏌ヨ鏈€鏂板尯鍧� **绫诲悕** - callSystemContract **鍙傛暟璇存槑** - withRWSet: 鏄惁杩斿洖璇诲啓闆�(boolean) ```javascript async getLastBlock(withRWSet) ``` ### 2.13 鏍规嵁鍖哄潡楂樺害鏌ヨ瀹屾暣鍖哄潡 **绫诲悕** - callSystemContract **鍙傛暟璇存槑** - blockHeight: 鍖哄潡楂樺害(number) ```javascript async getFullBlockByHeight(blockHeight) ``` ## 3 閾鹃厤缃帴鍙� ### 3.1 鏌ヨ鏈€鏂伴摼閰嶇疆 **绫诲悕** - chainConfig ```javascript async getChainConfig() ``` ### 3.2 鏍规嵁鎸囧畾鍖哄潡楂樺害鏌ヨ鏈€杩戦摼閰嶇疆 **绫诲悕** - chainConfig **鍙傛暟璇存槑** - blockHeight: 鍖哄潡楂樺害(number) ```javascript async getChainConfigByBlockHeight(blockHeight) ``` ### 3.3 鏌ヨ鏈€鏂伴摼閰嶇疆搴忓彿Sequence **绫诲悕** - chainConfig ```javascript async getChainConfigSequence() ``` ### 3.4 閾鹃厤缃洿鏂拌幏鍙朠ayload绛惧悕 **绫诲悕** - chainConfig **鍙傛暟璇存槑** 绫诲瀷锛歬-v Object瀵硅薄 - payload: 寰呯鍚峱ayload - userInfo: 闇€瑕佺鍚嶇殑鐢ㄦ埛锛坈lass UserInfo锛� ```javascript signChainConfigPayload(payload, userInfo) ``` ### 3.5 閾鹃厤缃洿鏂癙ayload绛惧悕鏀堕泦&鍚堝苟 **绫诲悕** - chainConfig **鍙傛暟璇存槑** - signedPayloadBytesArray: 绛惧悕涔嬪悗鐨刾ayload bytes鏁扮粍(Array[payloadBytes]) ```javascript mergeChainConfigSignedPayload(signedPayloadBytesArray) ``` ### 3.6 鍙戦€侀摼閰嶇疆鏇存柊璇锋眰 **绫诲悕** - chainConfig **鍙傛暟璇存槑** - signPayloadBytes: 绛惧悕涔嬪悗鐨刾ayload bytes ```javascript async sendChainConfigUpdateRequest(signPayloadBytes) ``` ### 3.7 鏇存柊Block妯″潡寰呯鍚峱ayload鐢熸垚 **绫诲悕** - chainConfig **鍙傛暟璇存槑** 绫诲瀷锛歬-v Object瀵硅薄 - txTimestampVerify: 鏄惁闇€瑕佸紑鍚氦鏄撴椂闂存埑鏍¢獙(boolean) - (浠ヤ笅鍙傛暟锛岃嫢鏃犻渶淇敼锛岃缃负-1) - txTimeout: 浜ゆ槗鏃堕棿鎴崇殑杩囨湡鏃堕棿(绉�)锛屽叾鍊艰寖鍥翠负`[600, +鈭�)(number)` - blockTxCapacity: 鍖哄潡涓渶澶т氦鏄撴暟锛屽叾鍊艰寖鍥翠负`(0, +鈭瀅(number)` - blockSize: 鍖哄潡鏈€澶ч檺鍒讹紝鍗曚綅MB锛屽叾鍊艰寖鍥翠负`(0, +鈭瀅(number)` - blockInterval: 鍑哄潡闂撮殧锛屽崟浣�:ms锛屽叾鍊艰寖鍥翠负`[10, +鈭瀅(number)` ```javascript async createChainConfigBlockUpdatePayload({txTimestampVerify, txTimeout = -1, blockTxCapacity = -1, blockSize = -1, blockInterval = -1, userInfoList}) ``` ### 3.8 鏇存柊Core妯″潡寰呯鍚峱ayload鐢熸垚 **绫诲悕** - chainConfig **鍙傛暟璇存槑** 绫诲瀷锛歬-v Object瀵硅薄 - txSchedulerTimeout: 浜ゆ槗璋冨害鍣ㄤ粠浜ゆ槗姹犳嬁鍒颁氦鏄撳悗, 杩涜璋冨害鐨勬椂闂达紝鍏跺€艰寖鍥翠负`[0, 60]`锛岃嫢鏃犻渶淇敼锛岃缃负-1(number) - txSchedulerValidateTimeout: 浜ゆ槗璋冨害鍣ㄤ粠鍖哄潡涓嬁鍒颁氦鏄撳悗, 杩涜楠岃瘉鐨勮秴鏃舵椂闂达紝鍏跺€艰寖鍥翠负`[0, 60]`锛岃嫢鏃犻渶淇敼锛岃缃负-1(number) ```javascript async ceateChainConfigCoreUpdatePayload({txSchedulerTimeout = -1, txSchedulerValidateTimeout = -1, userInfoList,}) ``` ### 3.9 娣诲姞淇′换缁勭粐鏍硅瘉涔﹀緟绛惧悕payload鐢熸垚 **绫诲悕** - chainConfig **鍙傛暟璇存槑** 绫诲瀷锛歬-v Object瀵硅薄 - orgId: 缁勭粐Id(string) - roots: 鏍硅瘉涔︽暟缁�(string) ```javascript async createChainConfigTrustRootAddPayload({ orgId, roots }) ``` ### 3.10 鏇存柊淇′换缁勭粐鏍硅瘉涔﹀緟绛惧悕payload鐢熸垚 **绫诲悕** - chainConfig **鍙傛暟璇存槑** 绫诲瀷锛歬-v Object瀵硅薄 - orgId: 缁勭粐Id(string) - roots: 鏍硅瘉涔︽暟缁�(string) ```javascript async createChainConfigTrustRootUpdatePayload({ orgId, roots }) ``` ### 3.11 鍒犻櫎淇′换缁勭粐鏍硅瘉涔﹀緟绛惧悕payload鐢熸垚 **绫诲悕** - chainConfig **鍙傛暟璇存槑** 绫诲瀷锛歬-v Object瀵硅薄 - orgId: 缁勭粐Id(string) ```javascript async createChainConfigTrustRootDeletePayload({ orgId }) ``` ### 3.12 娣诲姞鏉冮檺閰嶇疆寰呯鍚峱ayload鐢熸垚 **绫诲悕** - chainConfig **鍙傛暟璇存槑** 绫诲瀷锛歬-v Object瀵硅薄 - permissionResourceName: 鏉冮檺鍚�(string) - rule: 鏉冮檺鍐呭(string) - orgList: 缁勭粐鍒楄〃(Array[string]) - roleList: 鏉冮檺鍒楄〃(Array[string]) ```javascript async createChainConfigPermissionAddPayload({ permissionResourceName, rule, orgList = [], roleList = [] }) ``` ### 3.13 鏇存柊鏉冮檺閰嶇疆寰呯鍚峱ayload鐢熸垚 **绫诲悕** - chainConfig **鍙傛暟璇存槑** 绫诲瀷锛歬-v Object瀵硅薄 - permissionResourceName: 鏉冮檺鍚�(string) - rule: 鏉冮檺鍐呭(string) - orgList: 缁勭粐鍒楄〃(Array[string]) - roleList: 鏉冮檺鍒楄〃(Array[string]) ```javascript async createChainConfigPermissionUpdatePayload({ permissionResourceName, rule, orgList, roleList }) ``` ### 3.14 鍒犻櫎鏉冮檺閰嶇疆寰呯鍚峱ayload鐢熸垚 **绫诲悕** - chainConfig **鍙傛暟璇存槑** 绫诲瀷锛歬-v Object瀵硅薄 - permissionResourceName: 鏉冮檺鍚�(string) ```javascript async createChainConfigPermissionDeletePayload({ permissionResourceName }) ``` ### 3.15 娣诲姞鍏辫瘑鑺傜偣鍦板潃寰呯鍚峱ayload鐢熸垚 **绫诲悕** - chainConfig **鍙傛暟璇存槑** - orgId: 鑺傜偣缁勭粐Id(string) - nodeIds: 鑺傜偣Id鏁扮粍(Array[string]) ```javascript async createChainConfigConsensusNodeIdAddPayload(orgId, nodeIds) ``` ### 3.16 鏇存柊鍏辫瘑鑺傜偣鍦板潃寰呯鍚峱ayload鐢熸垚 **绫诲悕** - chainConfig **鍙傛暟璇存槑** - orgId: 鑺傜偣缁勭粐Id(string) - nodeId: 鏃ц妭鐐笽d(string) - newNodeId: 鏂拌妭鐐笽d(string) ```javascript async createChainConfigConsensusNodeIdUpdatePayload(orgId, nodeId, newNodeId) ``` ### 3.17 鍒犻櫎鍏辫瘑鑺傜偣鍦板潃寰呯鍚峱ayload鐢熸垚 **绫诲悕** - chainConfig **鍙傛暟璇存槑** - orgId: 鑺傜偣缁勭粐Id(string) - nodeId: 鑺傜偣Id(string) ```javascript async createChainConfigConsensusNodeIdDeletePayload(orgId, nodeId) ``` ### 3.18 娣诲姞鍏辫瘑鑺傜偣寰呯鍚峱ayload鐢熸垚 **绫诲悕** - chainConfig **鍙傛暟璇存槑** - orgId: 鑺傜偣缁勭粐Id(string) - nodeIds: 鑺傜偣Id鏁扮粍(Array[string]) ```javascript async createChainConfigConsensusNodeOrgAddPayload(orgId, nodeIds) ``` ### 3.19 鏇存柊鍏辫瘑鑺傜偣寰呯鍚峱ayload鐢熸垚 **绫诲悕** - chainConfig **鍙傛暟璇存槑** - orgId: 鑺傜偣缁勭粐Id(string) - nodeIds: 鑺傜偣Id鏁扮粍(Array[string]) ```javascript async createChainConfigConsensusNodeOrgUpdatePayload(orgId, nodeIds) ``` ### 3.20 鍒犻櫎鍏辫瘑鑺傜偣寰呯鍚峱ayload鐢熸垚 **绫诲悕** - chainConfig **鍙傛暟璇存槑** - orgId: 鑺傜偣缁勭粐Id(string) ```javascript async createChainConfigConsensusNodeOrgDeletePayload(orgId) ``` ### 3.21 娣诲姞鍏辫瘑鎵╁睍瀛楁寰呯鍚峱ayload鐢熸垚 **绫诲悕** - chainConfig **鍙傛暟璇存槑** - kvs: 瀛楁key銆乿alue瀵�(k-v Object瀵硅薄) ```javascript async createChainConfigConsensusExtAddPayload(kvs) ``` ### 3.22 娣诲姞鍏辫瘑鎵╁睍瀛楁寰呯鍚峱ayload鐢熸垚 **绫诲悕** - chainConfig **鍙傛暟璇存槑** - kvs: 瀛楁key銆乿alue瀵�(k-v Object瀵硅薄) ```javascript async createChainConfigConsensusExtUpdatePayload(kvs) ``` ### 3.23 娣诲姞鍏辫瘑鎵╁睍瀛楁寰呯鍚峱ayload鐢熸垚 **绫诲悕** - chainConfig **鍙傛暟璇存槑** - keys: 瀛楁key鏁扮粍(Array[string]) ```javascript async createChainConfigConsensusExtDeletePayload(keys) ``` ### 3.24 娣诲姞淇′换鎴愬憳璇佷功寰呯鍚峱ayload鐢熸垚 **绫诲悕** - chainConfig **鍙傛暟璇存槑** 绫诲瀷锛歬-v Object瀵硅薄 - trustMemberOrgId: 缁勭粐Id - trustMemberNodeId: 鑺傜偣Id - trustMemberRole: 鎴愬憳瑙掕壊 - trustMemberInfo: 鎴愬憳淇℃伅鍐呭 ```javascript async createChainConfigTrustMemberAddPayload({ trustMemberOrgId, trustMemberNodeId, trustMemberRole, trustMemberInfo, }) ``` ### 3.25 鍒犻櫎淇′换鎴愬憳璇佷功寰呯鍚峱ayload鐢熸垚 **绫诲悕** - chainConfig **鍙傛暟璇存槑** - trustMemberInfo: 鎴愬憳淇℃伅鍐呭 ```javascript async createChainConfigTrustMemberDeletePayload(trustMemberInfo) ``` ## 4 璇佷功绠$悊鎺ュ彛 ### 4.1 鐢ㄦ埛璇佷功娣诲姞 **绫诲悕** - certMgr **鍙傛暟璇存槑** - 鍦╮esponse.ContractResult.Result瀛楁涓繑鍥炴垚鍔熸坊鍔犵殑certHash ```javascript async addCert() ``` ### 4.2 鐢ㄦ埛璇佷功鍒犻櫎 **绫诲悕** - certMgr **鍙傛暟璇存槑** - certHashes: 璇佷功Hash鍒楄〃(Array[string]) ```javascript async deleteCert(certHashes) ``` ### 4.3 鐢ㄦ埛璇佷功鏌ヨ **绫诲悕** - certMgr **鍙傛暟璇存槑** - certHashes: 璇佷功Hash鍒楄〃(Array[string]) ```javascript async queryCert(certHashes) ``` ### 4.4 鑾峰彇鐢ㄦ埛璇佷功鍝堝笇 **绫诲悕** - certMgr **鍙傛暟璇存槑** ```javascript async getCertHash() ``` ### 4.5 鐢熸垚璇佷功绠$悊鎿嶄綔Payload锛堜笁鍚堜竴鎺ュ彛锛� **绫诲悕** - certMgr **鍙傛暟璇存槑** - method: CERTS_FROZEN(璇佷功鍐荤粨)/CERTS_UNFROZEN(璇佷功瑙e喕)/CERTS_REVOCATION(璇佷功鍚婇攢) - params: 璇佷功绠$悊鎿嶄綔鍙傛暟 ```javascript async createCertManagePayload(method, params) ``` ### 4.6 鐢熸垚璇佷功鍐荤粨鎿嶄綔Payload **绫诲悕** - certMgr **鍙傛暟璇存槑** - certs: 璇佷功鍒楄〃(Array[string]) ```javascript async createCertManageFrozenPayload(certs) ``` ### 4.7 鐢熸垚璇佷功瑙e喕鎿嶄綔Payload **绫诲悕** - certMgr **鍙傛暟璇存槑** - certs: 璇佷功鍒楄〃(Array[string]) ```javascript async createCertManageUnfrozenPayload(certs) ``` ### 4.8 鐢熸垚璇佷功鍚婇攢鎿嶄綔Payload **绫诲悕** - certMgr **鍙傛暟璇存槑** - certCrl: 鍚婇攢璇佷功鐨刢rl(string) ```javascript async createCertManageRevocationPayload(certCrl) ``` ### 4.9 寰呯payload绛惧悕 **绫诲悕** - certMgr **鍙傛暟璇存槑** - payload: 寰呯鍚峱ayload ```javascript signCertManagePayload(payload) ``` ### 4.10 璇佷功绠$悊Payload绛惧悕鏀堕泦&鍚堝苟 **绫诲悕** - certMgr **鍙傛暟璇存槑** - signedPayloadBytesArray: 绛惧悕涔嬪悗鐨刾ayload bytes鏁扮粍(Array[payloadBytes]) ```javascript mergeCertManageSignedPayload(signedPayloadBytesArray) ``` ### 4.11 鍙戦€佽瘉涔︾鐞嗚姹傦紙璇佷功鍐荤粨銆佽В鍐汇€佸悐閿€锛� **绫诲悕** - certMgr **鍙傛暟璇存槑** - payloadBytes: 绛惧悕涔嬪悗鐨刾ayload bytes - withSyncResult: 鏄惁鍚屾鑾峰彇缁撴灉 ```javascript async sendCertManageRequest(payloadBytes, withSyncResult) ``` ## 5 娑堟伅璁㈤槄鎺ュ彛 ### 5.1 鍖哄潡璁㈤槄 **绫诲悕** - subscribe **鍙傛暟璇存槑** - startBlock: 璁㈤槄璧峰鍖哄潡楂樺害锛岃嫢涓�-1锛岃〃绀鸿闃呭疄鏃舵渶鏂板尯鍧�(number) - endBlock: 璁㈤槄缁撴潫鍖哄潡楂樺害锛岃嫢涓�-1锛岃〃绀鸿闃呭疄鏃舵渶鏂板尯鍧�(number) - withRwSet: 鏄惁杩斿洖璇诲啓闆�(boolean) - callBack: 鍥炶皟鍑芥暟锛岀涓€涓弬鏁版槸鐩戝惉鍒扮殑鐨刡lock鍖哄潡锛岀浜屼釜鍙傛暟鏄敊璇俊鎭� ```javascript subscribeBlock(startBlock, endBlock, withRwSet, callBack) ``` ### 5.2 浜ゆ槗璁㈤槄 **绫诲悕** - subscribe **鍙傛暟璇存槑** - startBlock: 璁㈤槄璧峰鍖哄潡楂樺害锛岃嫢涓�-1锛岃〃绀鸿闃呭疄鏃舵渶鏂板尯鍧�(number) - endBlock: 璁㈤槄缁撴潫鍖哄潡楂樺害锛岃嫢涓�-1锛岃〃绀鸿闃呭疄鏃舵渶鏂板尯鍧�(number) - txType: 璁㈤槄浜ゆ槗绫诲瀷,鑻ヤ负common.TxType(-1)锛岃〃绀鸿闃呮墍鏈変氦鏄撶被鍨�(number) - txIds: 璁㈤槄txId鍒楄〃锛岃嫢涓虹┖(null)锛岃〃绀鸿闃呮墍鏈塼xId(Array[string]) - callBack: 鍥炶皟鍑芥暟锛岀涓€涓弬鏁版槸鐩戝惉鍒扮殑浜ゆ槗锛岀浜屼釜鍙傛暟鏄敊璇俊鎭� ```javascript subscribeTx(startBlock, endBlock, txType, txIds, callBack) ``` ### 5.3 鍚堢害浜嬩欢璁㈤槄 **绫诲悕** - subscribe **鍙傛暟璇存槑** - topic: 璁㈤槄鐨勪富棰�(string) - contractName: 鏅鸿兘鍚堢害鍚嶇О(string) - callBack: 鍥炶皟鍑芥暟锛岀涓€涓弬鏁版槸鐩戝惉鍒扮殑鍚堢害浜嬩欢锛岀浜屼釜鍙傛暟鏄敊璇俊鎭� ```javascript subscribeContractEvent(topic, contractName, callBack) ``` ### 5.4 澶氬悎涓€璁㈤槄 **绫诲悕** - subscribe **鍙傛暟璇存槑** - txType: 璁㈤槄浜ゆ槗绫诲瀷锛岀洰鍓嶅凡鏀寔锛氬尯鍧楁秷鎭闃�(common.TxType_SUBSCRIBE_BLOCK_INFO)銆佷氦鏄撴秷鎭闃�(common.TxType_SUBSCRIBE_TX_INFO)銆佸悎绾︿簨浠惰闃�(common.TxType.CONTRACT_EVENT_INFO) - payloadBytes: 娑堟伅璁㈤槄鍙傛暟payload - callBack: 鍥炶皟鍑芥暟锛岀涓€涓弬鏁版槸鐩戝惉鍒扮殑浜嬩欢杩斿洖锛岀浜屼釜鍙傛暟鏄敊璇俊鎭� ```javascript subscribe(payloadBytes, txType, callBack) ``` ## 6 璇佷功鍘嬬缉 *寮€鍚瘉涔﹀帇缂╁彲浠ュ噺灏忎氦鏄撳寘澶у皬锛屾彁鍗囧鐞嗘€ц兘* ### 6.1 鍚敤鍘嬬缉璇佷功鍔熻兘 **绫诲悕** - certCompression **鍙傛暟璇存槑** ```javascript async enableCertHash() ``` ### 6.2 鍋滅敤鍘嬬缉璇佷功鍔熻兘 **绫诲悕** - certCompression **鍙傛暟璇存槑** ```javascript async disableCertHash() ``` ## 7 宸ュ叿绫� ### 7.1 灏咵asyCodec缂栫爜瑙g爜鎴恗ap **绫诲悕** - easyCodec ```javascript easyCodecItemToParamsMap(easyCodecObj) ``` ## 8 鏁版嵁褰掓。 ### 8.1 鑾峰彇宸插綊妗e尯鍧楅珮搴� **绫诲悕** - callSystemContract **鍙傛暟璇存槑** ```javascript async getArchivedBlockHeight() ``` ### 8.2 鏋勯€犳暟鎹綊妗e尯鍧桺ayload **绫诲悕** - archive **鍙傛暟璇存槑** - targetBlockHeight: 鐩爣鍖哄潡楂樺害(number) ```javascript createArchiveBlockPayload(targetBlockHeight) ``` ### 8.3 鏋勯€犲綊妗e綊妗f暟鎹仮澶峆ayload **绫诲悕** - archive **鍙傛暟璇存槑** - fullBlock: 瀹屾暣鍖哄潡鐨刡ytes ```javascript createRestoreBlockPayload(fullBlock) ``` ### 8.4 鑾峰彇褰掓。鎿嶄綔Payload绛惧悕 **绫诲悕** - archive **鍙傛暟璇存槑** - payloadBytes: 寰呯鍚峱ayloadBytes ```javascript signArchivePayload(payloadBytes) ``` ### 8.5 鍙戦€佸綊妗h姹� **绫诲悕** - archive **鍙傛暟璇存槑** - mergeSignedPayloadBytes: 绛惧悕涔嬪悗鐨刾ayloadBytes ```javascript async sendArchiveBlockRequest(mergeSignedPayloadBytes) ``` ### 8.6 褰掓。鏁版嵁鎭㈠ **绫诲悕** - archive **鍙傛暟璇存槑** - fullBlock: 瀹屾暣鍖哄潡鐨刡ytes ```javascript async restoreBlock(fullBlock) ``` ### 8.7 鏍规嵁浜ゆ槗Id鏌ヨ宸插綊妗d氦鏄� **绫诲悕** - archive **鍙傛暟璇存槑** - txId: 浜ゆ槗Id(string) ```javascript async getArchivedTxByTxId(txId) ``` ### 8.8 鏍规嵁鍖哄潡楂樺害鏌ヨ宸插綊妗e尯鍧� **绫诲悕** - archive **鍙傛暟璇存槑** - blockHeight: 鍖哄潡楂樺害(number) - withRWSet: 鏄惁杩斿洖璇诲啓闆�(boolean) ```javascript async getArchivedBlockByHeight(blockHeight, withRWSet) ``` ### 8.9 鏍规嵁鍖哄潡楂樺害鏌ヨ宸插綊妗e畬鏁村尯鍧�(鍖呭惈锛氬尯鍧楁暟鎹€佽鍐欓泦銆佸悎绾︿簨浠舵棩蹇�) **绫诲悕** - archive **鍙傛暟璇存槑** - blockHeight: 鍖哄潡楂樺害(number) ```javascript async getArchivedFullBlockByHeight(blockHeight) ``` ### 8.10 鏍规嵁鍖哄潡鍝堝笇鏌ヨ宸插綊妗e尯鍧� **绫诲悕** - archive **鍙傛暟璇存槑** - hash: 鍖哄潡鍝堝笇(string) - withRWSet: 鏄惁杩斿洖璇诲啓闆�(boolean) ```javascript async getArchivedBlockByHash(hash, withRWSet) ``` ### 8.11 鏍规嵁浜ゆ槗Id鏌ヨ宸插綊妗e尯鍧� **绫诲悕** - archive **鍙傛暟璇存槑** - txId: 浜ゆ槗Id(string) - withRWSet: 鏄惁杩斿洖璇诲啓闆�(boolean) ```javascript async getArchivedBlockByTxId(txId, withRWSet) ``` ## 9 绯荤粺绫绘帴鍙� ### 9.1 SDK鍋滄鎺ュ彛 *鍏抽棴杩炴帴姹犺繛鎺ワ紝閲婃斁璧勬簮* ```javascript stop() ``` ## 10 绫绘瀯閫犲嚱鏁� ### 10.1 UserContract **鍙傛暟璇存槑** - chainID: chainId(string) - userInfo: 鐢ㄦ埛绫�(calss UserInfo) - node: 鑺傜偣绫�(class node) ```javascript constructor(chainID, userInfo, node) ``` ### 10.2 CallUserContract **鍙傛暟璇存槑** - chainID: chainId(string) - userInfo: 鐢ㄦ埛绫�(calss UserInfo) - node: 鑺傜偣绫�(class node) ```javascript constructor(chainID, userInfo, node) ``` ### 10.3 CallSystemContract **鍙傛暟璇存槑** - chainID: chainId(string) - userInfo: 鐢ㄦ埛绫�(calss UserInfo) - node: 鑺傜偣绫�(class node) ```javascript constructor(chainID, userInfo, node) ``` ### 10.4 ChainConfig **鍙傛暟璇存槑** - chainID: chainId(string) - userInfo: 鐢ㄦ埛绫�(calss UserInfo) - node: 鑺傜偣绫�(class node) ```javascript constructor(chainID, userInfo, node) ``` ### 10.5 CertMgr **鍙傛暟璇存槑** - chainConfig: ChainConfig绫�(class ChainConfig) - chainID: chainId(string) - userInfo: 鐢ㄦ埛绫�(calss UserInfo) - node: 鑺傜偣绫�(class node) ```javascript constructor(chainConfig, chainID, userInfo, node) ``` ### 10.6 Subscribe **鍙傛暟璇存槑** - chainID: chainId(string) - userInfo: 鐢ㄦ埛绫�(calss UserInfo) - node: 鑺傜偣绫�(class node) ```javascript constructor(chainID, userInfo, node) ``` ### 10.7 EasyCodec ```javascript constructor() ``` ### 10.8 Archive **鍙傛暟璇存槑** - chainID: chainId(string) - userInfo: 鐢ㄦ埛绫�(calss UserInfo) - node: 鑺傜偣绫�(class node) - callSystemContract: 绯荤粺鍚堢害璋冪敤绫�(class callSystemContract) 鏁版嵁搴撳弬鏁帮紝绫诲瀷锛歬-v Object瀵硅薄 - type: 鏁版嵁搴撶被鍨嬶紝鐩墠鍙敮鎸乵ysql锛岄粯璁や负mysql锛屾棤闇€璁剧疆 - dbHost: 鏁版嵁搴撳湴鍧€ - dbPort: 鏁版嵁搴撶鍙� - dbUsername: 鏁版嵁搴撶敤鎴峰悕 - dbPassword: 鏁版嵁搴撳瘑鐮� ```javascript constructor(chainID, userInfo, node, callSystemContract, { type = 'mysql', dbHost, dbPort, dbUsername, dbPassword }) ``` ### 10.9 UserInfo **鍙傛暟璇存槑** - orgID: 缁勭粐ID - userSignKeyPath: 鐢ㄦ埛绉侀挜璺緞 - userSignCertPath: 鐢ㄦ埛璇佷功璺緞 ```javascript constructor(orgID, userSignKeyPath, userSignCertPath) ``` ### 10.10 Node **鍙傛暟璇存槑** - requestTimeout: 寤舵椂锛屽崟浣峬s锛岄粯璁�3000 鑺傜偣閰嶇疆鍙傛暟nodeConfigArray锛岀被鍨嬶細k-v Object鏁扮粍(Array[Object]) - nodeAddr: 鑺傜偣鍦板潃锛宨p+绔彛(string) - tlsEnable: 鏄惁寮€鍚痶ls(boolean) - options: 绫诲瀷k-v Object(pem: 鏍筩a璇佷功Buffer, clientKey: 瀹㈡埛绔閽uffer, clientCert: 瀹㈡埛绔瘉涔uffer, hostName: 鑺傜偣鍩熷悕锛屽搴旇瘉涔︿腑鐨剆ans瀛楁) ```javascript constructor(nodeConfigArray, requestTimeout) ``` ### 10.11 Sdk **鍙傛暟璇存槑** - chainID: chainId(string) - orgID: 缁勭粐ID - userSignKeyPath: 鐢ㄦ埛绉侀挜璺緞 - userSignCertPath: 鐢ㄦ埛璇佷功璺緞 - nodeConfigArray: 鍙傝€�10.6nodeConfigArray - timeout: 寤舵椂锛屽崟浣峬s - archiveConfig: 鍙傝€�10.8鏁版嵁搴撳弬鏁� ```javascript constructor(chainID, orgID, userSignKeyPath, userSignCertPath, nodeConfigArray, timeout, archiveConfig = {}) ``` ### 10.12 LoadFromYaml **鍙傛暟璇存槑** - configPath: 閰嶇疆鏂囦欢璺緞(string) ```javascript constructor(configPath) ```