# Nodejs SDK 浣跨敤璇存槑 ## 鍩烘湰姒傚康瀹氫箟 1. 鏁翠綋浠嬬粛 `SDK`鏄笟鍔℃ā鍧椾笌闀垮畨閾句氦浜掔殑妗ユ锛屾敮鎸佸弻鍚慲TLS`璁よ瘉锛屾彁渚涘畨鍏ㄥ彲闈犵殑鍔犲瘑閫氫俊淇¢亾銆� 鎻愪緵鐨勬帴鍙o紝瑕嗙洊鍚堢害绠$悊銆侀摼閰嶇疆绠$悊銆佽瘉涔︾鐞嗐€佸绛炬敹闆嗐€佸悇绫绘煡璇㈡搷浣溿€佷簨浠惰闃呫€佹暟鎹綊妗g瓑鍦烘櫙锛屾弧瓒充簡涓嶅悓鐨勪笟鍔″満鏅渶瑕併€� 2. 鍚嶈瘝姒傚康璇存槑 - **`Node`锛堣妭鐐癸級**锛氫唬琛ㄤ竴涓摼鑺傜偣鐨勫熀鏈俊鎭紝鍖呮嫭锛氳妭鐐瑰湴鍧€銆佽繛鎺ユ暟銆佹槸鍚﹀惎鐢╜TLS`璁よ瘉绛変俊鎭� - **`ChainClient`锛堥摼瀹㈡埛绔級**锛氭墍鏈夊鎴风瀵归摼鑺傜偣鐨勬搷浣滄帴鍙i兘鏉ヨ嚜`ChainClient` - **鍘嬬缉璇佷功**锛氬彲浠ヤ负`ChainClient`寮€鍚瘉涔﹀帇缂╁姛鑳斤紝寮€鍚悗鍙互鍑忓皬浜ゆ槗鍖呭ぇ灏忥紝鎻愬崌澶勭悊鎬ц兘 ## 鐜鍑嗗 ### 杞欢渚濊禆 **nodejs** > nodejs 14.0.0+ 涓嬭浇鍦板潃锛歨ttps://nodejs.org/dist/ 鑻ュ凡瀹夎锛岃閫氳繃鍛戒护鏌ョ湅鐗堟湰锛� ```bash $ node --version v14.0.0 ``` ### 涓嬭浇瀹夎 ```bash $ git clone -b v2.0.0 --depth=1 https://git.chainmaker.org.cn/chainmaker/sdk-nodejs.git ``` ## 鎬庝箞浣跨敤SDK ### 绀轰緥浠g爜 > 娉細 涓嬫柟鏂囨。绀轰緥鍙兘杩囨椂锛屼互gitlab绀轰緥涓哄噯銆� > > evm鍜屽叾浠栧悎绾︿娇鐢ㄦ柟娉曞湪鏋勫缓鍙傛暟鏃舵湁鍖哄埆銆� > > evm鐨勫彲鍙傝€冪ず渚嬶細[TestEvmContract](https://git.chainmaker.org.cn/chainmaker/sdk-java/-/blob/v2.3.1.3/src/test/java/org/chainmaker/sdk/TestEvmContract.java) #### 鍒涘缓鑺傜偣 > 鏇村鍐呭璇峰弬鐪嬶細`sdkInit.js` ```javascript // 鍒涘缓鑺傜偣 this.node = new Node(nodeConfigArray, timeout); ``` #### 鍙傛暟褰㈠紡鍒涘缓ChainClient > 鏇村鍐呭璇峰弬鐪嬶細`sdkInit.js` ```javascript // 鍒涘缓ChainClient const ChainClient = new Sdk(chainID, orgID, userKeyPathFile, userCertPathFile, nodeConfigArray, 30000, archiveConfig); ``` #### 浠ラ厤缃枃浠跺舰寮忓垱寤篊hainClient > 鏇村鍐呭璇峰弬鐪嬶細`sdkinit.js` ```javascript const ChainClient = new LoadFromYaml(path.join(__dirname, './sdk_config.yaml')); ``` #### 鍒涘缓鍚堢害 > 鏇村鍐呭璇峰弬鐪嬶細`testUserContractMgr.js` ```javascript const testCreateUserContract = async (sdk, contractName, contractVersion, contractFilePath) => { const response = await sdk.userContractMgr.createUserContract({ contractName, contractVersion, contractFilePath, runtimeType: utils.common.RuntimeType.GASM, params: { key1: 'value1', key2: 'value2', }, }); return response; }; ``` #### 璋冪敤鍚堢害 > 鏇村鍐呭璇峰弬鐪嬶細`testUserContractMgr.js` ```javascript const testInvokeUserContract = async (sdk, contractName) => { const response = await sdk.callUserContract.invokeUserContract({ contractName, method: 'save', params: { file_hash: '1234567890', file_name: 'test.txt', }, }); return response; }; ``` ### 鏇村绀轰緥鍜岀敤娉� > 鏇村绀轰緥鍜岀敤娉曪紝璇峰弬鐪嬪崟鍏冩祴璇曠敤渚� 瀹夎mocha锛� ```bash $ npm install -g mocha ``` 浣跨敤鑴氭湰鎼缓chainmaker杩愯鐜锛�4缁勭粐4鑺傜偣锛夛紝灏哹uild鏂囦欢涓殑cryptogen澶嶅埗鍒板綋鍓嶉」鐩殑test/testFile鏂囦欢涓� 杩愯娴嬭瘯鍛戒护锛� ```bash $ npm test ``` | 鍔熻兘 | 鍗曟祴浠g爜 | | -------- | ------------------- | | 鍩虹閰嶇疆 | `sdkInit.js` | | 鐢ㄦ埛鍚堢害 | `userContract.js` | | 绯荤粺鍚堢害 | `systemContract.js` | | 閾鹃厤缃� | `chainConfig.js` | | 璇佷功绠$悊 | `cert.js` | | 娑堟伅璁㈤槄 | `subscribe.js` | ## 鎺ュ彛璇存槑 璇峰弬鐪嬶細[銆奵hainmaker-nodejs-sdk銆媇(https://git.chainmaker.org.cn/chainmaker/sdk-nodejs/-/blob/v2.0.0/sdk_interface.md) ## demo 鍙傝€冿細 https://git.chainmaker.org.cn/chainmaker/sdk-nodejs-demo