# 鍚堢害鍜岀敤鎴峰湴鍧€浠嬬粛 鍦ㄥ尯鍧楅摼涓婏紝閫氬父浼氭湁涓€涓湴鍧€锛屼綔涓虹敤鎴锋垨鑰呭悎绾﹀湪閾句笂鐨勫敮涓€鏍囪瘑绗︺€備负浜嗕繚璇佸湴鍧€鐨勫敮涓€鎬э紝鍦板潃涓€鑸敱鍝堝笇璁$畻寰楀埌銆備竴鑸潵璇达紝鐢ㄦ埛鐨勫湴鍧€鏍规嵁鍏挜璁$畻寰楀埌锛岃€屾櫤鑳藉悎绾︾殑鍦板潃鐢卞尯鍧楅摼鑷姩鐢熸垚銆� ## 璁$畻鏂瑰紡 鍦–hainMaker涓婏紝鐢ㄦ埛鍦板潃涔熸槸鏍规嵁鐢ㄦ埛鐨勫叕閽ヨ绠楀緱鍒扮殑锛屼絾鍚堢害鍦板潃锛屽彲浠ョ敱閾捐嚜鍔ㄧ敓鎴愶紝涔熷彲浠ユ牴鎹敤鎴风殑鍚堢害鍚嶈绠楀緱鍒般€備笖瀵逛簬鍚堢害鏉ヨ锛孋hainMaker鏀寔鍚堢害鍚嶄笌鍚堢害鍦板潃涓ょ鏂瑰紡璋冪敤銆傚浜庝换鎰忕被鍨嬬殑鍚堢害锛屽寘鎷琫vm銆亀asmer銆亀xvm绛夌瓑锛孋hainMaker閮ㄧ讲鍚堢害鏃讹紝閮戒細灏嗙敤鎴锋彁渚涚殑鍚堢害鍚嶈绠椾负鍚堢害鍦板潃锛屽苟鍦ㄥ悎绾﹂儴缃叉垚鍔熷悗灏嗗悎鍦板潃鏀惧叆contract瀵硅薄鍐呰繑鍥烇紝鐢ㄦ埛鍙嶅簭鍒楀寲contract瀵硅薄灏卞緱鍒拌鍚堢害鐨勫湴鍧€銆� 瀵逛簬ChainMaker鏉ヨ锛屽綋鍓嶆敮鎸佷互涓嬩笁绉嶅湴鍧€绫诲瀷锛� - **CHAINMAKER** 姝ゅ湴鍧€鏍煎紡涓�20瀛楄妭鏁扮粍锛屼絾涓€鑸細灏嗗叾杞崲涓哄彲灞曠ず鐨�16杩涘埗瀛楃涓诧紝杞崲鍚庨暱搴︿负40瀛楄妭锛屼緥濡傦細`ce244336a16f64c5b6b27feae28a5ebd270be8ee`銆侰HAINMAKER瀵逛簬鍏挜妯″紡鐨勭敤鎴锋潵璇达紝鐢变簬璁$畻SKI绋嶆樉澶嶆潅锛岀幇宸蹭笉鎺ㄨ崘浣跨敤銆� - 鐢ㄦ埛鍦板潃鈥斺€旀牴鎹敤鎴风殑SKI锛圫ubjectKeyId锛夎绠梜eccak256鍝堝笇锛岀劧鍚庢埅鍙栧搱甯屽€肩殑鍚�20瀛楄妭锛屽澶栧睍绀烘椂锛屼細鍐嶈浆鎹负鍗佸叚杩涘埗瀛楃涓插舰寮忥紱 - 鍚堢害鍦板潃鈥斺€旀牴鎹悎绾﹀悕璁$畻keccak256鍝堝笇锛岀劧鍚庢埅鍙栧搱甯屽€肩殑鍚�20瀛楄妭锛屽澶栧睍绀烘椂锛屼細鍐嶈浆鎹负鍗佸叚杩涘埗瀛楃涓插舰寮忋€� - **ZXL** 杩囨湡锛屼笉寤鸿浣跨敤 - **ETHEREUM** 姝ゅ湴鍧€鏍煎紡涔熸槸20瀛楄妭鏁扮粍锛岃浆鎹负鍙睍绀虹殑16杩涘埗瀛楃涓插悗锛屼竴鑸細鍔犱竴涓€�0x鈥滃墠缂€锛岄暱搴︿篃鍙樻垚浜�42瀛楄妭锛屼緥濡傦細`0x7cf146966856b4899b4f25f169d81176d0942050`锛屼絾鈥�0x鈥滃墠缂€闈炲繀椤伙紝鍙姞鍙笉鍔犮€� - 鐢ㄦ埛鍦板潃鈥斺€斿鐢ㄦ埛鍏挜搴忓垪鍖栧悗锛岃绠梜eccak256鍝堝笇锛岀劧鍚庢埅鍙栧搱甯屽€肩殑鍚�20瀛楄妭锛屽澶栧睍绀烘椂锛屼細鍐嶈浆鎹负鍗佸叚杩涘埗瀛楃涓插舰寮忥紱 - 鍚堢害鍦板潃鈥斺€旀牴鎹悎绾﹀悕璁$畻keccak256鍝堝笇锛岀劧鍚庢埅鍙栧搱甯屽€肩殑鍚�20瀛楄妭锛屽澶栧睍绀烘椂锛屼細鍐嶈浆鎹负鍗佸叚杩涘埗瀛楃涓插舰寮忋€� ETHEREUM涓嶤HAINMAKER闈炲父鐩镐技锛屽挨鍏跺浜庡悎绾﹀湴鍧€锛屼袱鑰呯殑鍙傛暟鍜屽搱甯岀畻娉曢兘鏄浉鍚岀殑銆備絾瀵逛簬鐢ㄦ埛鍦板潃绋嶆湁涓嶅悓锛屼富瑕佹槸鍦板潃鐨勮绠楀弬鏁帮紝ETHEREUM鏄簭鍒楀寲鍚庣殑鍏挜锛岃€孋HAINMAKER涓篠KI锛屽搱甯岀畻娉曚粛鐒舵槸鐩稿悓鐨勩€� ETHEREUM鍦板潃绫诲瀷鐨勪紭鐐规槸鍏煎浠ュお鍧婂湴鍧€绫诲瀷锛岃€屼笖锛屼篃鏄疌hainMaker鐨勯粯璁ゅ湴鍧€绫诲瀷銆� ## 鐗堟湰鍘嗗彶 鍦ㄩ暱瀹夐摼2.3.0鐗堟湰涔嬪墠锛岄櫎浜唖olidity鍚堢害澶栵紝鍏朵粬绫诲瀷鐨勫悎绾︿笉鏀寔鍦板潃锛屽彧鏈夊悎绾﹀悕锛屼笖solidity鐨勫悎绾﹀悕鏈韩灏辨槸鍦板潃锛岄潪鍦板潃绫诲瀷鐨勫瓧绗︿覆鏃犳硶浣滀负鍚堢害鍚嶄娇鐢ㄣ€傛澶栵紝鍚堢害鍦板潃鍙敮鎸�**CHAINMAKER**鍜�**ZXL**涓ょ绫诲瀷銆� 鑷�2.3.0鐗堟湰寮€濮嬶紝闀垮畨閾惧唴鎵€鏈夌被鍨嬬殑鍚堢害閮藉凡鏀寔鍦板潃鍔熻兘锛屼笖鍦板潃鍜屽悎绾﹀悕鍒嗗紑锛屾垚涓哄悎绾︾殑涓嶅悓灞炴€э紝鐢ㄦ埛鍙互閫氳繃鍚堢害鍚嶈皟鐢ㄥ悎绾︼紝涔熷彲浠ラ€氳繃鍦板潃璋冪敤銆傛澶栵紝杩樻坊鍔犱簡鏂扮殑鍦板潃绫诲瀷**ETHEREUM**锛屼笖闀垮畨閾炬墍鏈夌被鍨嬪悎绾︼紝閮芥敮鎸佷互涓婁笁绉嶅湴鍧€绫诲瀷銆� ## 閰嶇疆 鍦–hainMaker鍐咃紝鍦板潃绫诲瀷鍙互閫氳繃閰嶇疆鏂囦欢chainconfig/bc.yml鍐呯殑addr_type瀛楁鎸囧畾锛岄厤缃负0锛屾槸CHAINMAKER绫诲瀷锛�1涓篫XL绫诲瀷锛�2涓篍HEREUM绫诲瀷锛岄粯璁ら厤缃被鍨嬩负2锛屽涓嬫墍绀恒€� ***chainconfig/bc.yml閰嶇疆鍦板潃绫诲瀷鐨勭墖娈�*** ```shell ...... # 铏氭嫙鏈洪厤缃� vm: addr_type: 2 #0:chainmaker, 1:zxl, 2:ethereum # 铏氭嫙鏈烘敮鎸佸垪琛� support_list: ...... ``` ## 璁$畻鎺ュ彛 瀵逛簬鍦板潃鐨勮绠楋紝ChainMaker涓哄紑鍙戣€呮彁渚涗簡缁熶竴鐨勮绠楁帴鍙o紝杩欎簺鎺ュ彛缁熶竴鏀惧湪浜唘tils妯″潡涓嬬殑address.go鍘熸枃浠跺唴锛坓itlab閾炬帴锛歨ttps://git.chainmaker.org.cn/chainmaker/utils/-/blob/master/address.go锛夛紝寮€鍙戣€呭彲閫氳繃瀵煎叆璇ユā鍧楋紝骞惰皟鐢ㄥ搴旂殑鎺ュ彛璁$畻鍦板潃锛屼互淇濊瘉鎺ュ彛璁$畻鐨勪竴鑷存€с€備互涓嬭〃鏍间负鍦板潃璁$畻鎺ュ彛灞曠ず銆� ***utils/address.go涓嬫彁渚涚殑鍦板潃璁$畻鎺ュ彛*** | 鎺ュ彛 | 鍔熻兘 | | ------------------------------------------------------------ | ---------------------------------------- | | func GenerateAddrStr(data []byte, addrType config.AddrType) (string, err) | 鏍规嵁鏁版嵁璁$畻鍗佸叚杩涘埗瀛楃涓茬被鍨嬬殑鍦板潃 | | func GenerateAddrInt(data []byte, addrType config.AddrType) (big.Int, err) | 鏍规嵁鏁版嵁璁$畻big.Int绫诲瀷鐨勫湴鍧€ | | func PkToAddrStr(pk crypto.PublicKey, addrType config.AddrType, hashType crypto.HashType)(string, err) | 鏍规嵁鍏挜璁$畻16杩涘埗瀛楃涓茬被鍨嬬殑鍦板潃 | | func PkToAddrInt(pk crypto.PublicKey, addrType config.AddrType, hashType crypto.HashType)(big.Int, err) | 鏍规嵁鍏挜璁$畻big.Int绫诲瀷鐨勫湴鍧€ | | func CertToAddrStr(cert *x509.Certificate, addrType config.AddrType) (string, err) | 鏍规嵁璇佷功璁$畻16杩涘埗瀛楃涓茬被鍨嬬殑鍦板潃 | | func CertToAddrInt(cert *x509.Certificate, addrType config.AddrType)(big.Int, err) | 鏍规嵁璇佷功璁$畻big.Int绫诲瀷鐨勫湴鍧€ | | func GetStrAddrFromMember(member protocol.Member, addrType config.AddrType) (string, err) | 鏍规嵁member绫诲瀷璁$畻16杩涘埗瀛楃涓茬被鍨嬬殑鍦板潃 | | func GetIntAddrFromMember(member protocol.Member, addrType config.AddrType) (big.Int, err) | 鏍规嵁member绫诲瀷璁$畻big.Int绫诲瀷鐨勫湴鍧€ |