From 966a0d6f10af72a21d24c223b4e045536014bf76 Mon Sep 17 00:00:00 2001 From: wd30130 Date: Wed, 21 Aug 2024 22:36:37 +0800 Subject: [PATCH 1/3] fix(*): fix bug from using split --- frame/hybrid-vm-port/src/port.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/frame/hybrid-vm-port/src/port.rs b/frame/hybrid-vm-port/src/port.rs index 8235dcd..38af186 100644 --- a/frame/hybrid-vm-port/src/port.rs +++ b/frame/hybrid-vm-port/src/port.rs @@ -108,8 +108,16 @@ impl Pallet { return Err(err); } - let input_type: Vec<&str> = abi_fun[index_s1 + 1..index_e1].split(',').collect(); - let output_type: Vec<&str> = abi_fun[index_s2 + 1..index_e2].split(',').collect(); + let input_type: Vec<&str> = if index_s1 + 1 < index_e1 { + abi_fun[index_s1 + 1..index_e1].split(',').collect() + } else { + vec![] + }; + let output_type: Vec<&str> = if index_s2 + 1 < index_e2 { + abi_fun[index_s2 + 1..index_e2].split(',').collect() + } else { + vec![] + }; // wasm type: AccountId,bool,Vec,H256,String,u8,u16,u32,u64,u128,U256,Vec let data_type = "address,bool,bytes,bytes32,string,uint8,uint16,uint32,uint64,uint128,uint256,address[],bool[],bytes32[],uint8[],uint16[],uint32[],uint64[],uint128[],uint256[]"; From 552511900e43b20c89236c28442a8113e584c029 Mon Sep 17 00:00:00 2001 From: wd30130 Date: Thu, 22 Aug 2024 11:54:35 +0800 Subject: [PATCH 2/3] feat(test): add abi item in wasm contract --- external/contract/src/erc20wasm/lib.rs | 4 ++++ frame/hybrid-vm/fixtures/erc20.wasm | Bin 21236 -> 21517 bytes 2 files changed, 4 insertions(+) diff --git a/external/contract/src/erc20wasm/lib.rs b/external/contract/src/erc20wasm/lib.rs index f12736d..912f6cc 100644 --- a/external/contract/src/erc20wasm/lib.rs +++ b/external/contract/src/erc20wasm/lib.rs @@ -165,6 +165,10 @@ mod erc20 { evm_abi.push(("approve(address,uint256)returns(bool)".to_string(), "approve_abi".to_string(), None)); evm_abi.push(("transferFrom(address,address,uint256)returns(bool)".to_string(), "transfer_from_abi".to_string(), None)); + evm_abi.push(("wasmCallEvm(string,string,uint128)returns(string)".to_string(), "wasmCallEvm".to_string(), None)); + evm_abi.push(("wasmCallEvmBalance(string,string)returns(uint128)".to_string(), "wasmCallEvmBalance".to_string(), None)); + evm_abi.push(("wasmCallEvmProxy(string)returns(string)".to_string(), "wasmCallEvmProxy".to_string(), None)); + evm_abi } diff --git a/frame/hybrid-vm/fixtures/erc20.wasm b/frame/hybrid-vm/fixtures/erc20.wasm index c2f7835eb38988971d5ae5b8e0ff716f41ada977..885d564e420f7be7cdde144141912e321bd3bbb9 100644 GIT binary patch delta 1622 zcmZ`(T})g>6rPzo3rp`(Z-@oLR=Imwe%2}kC|hj1umi#ZQYG|3tTBdEB;BP*_>uOd zd!YpcFNtvy%Y#;lKU8C4?KL*WCK?jsYD{CJjXr78)aXM^z)xL3VIXrs_7ftAu82uQTXSgM~!oOZFf>bFrNa|90e{|W;Vba zPrw9&n_($ORHp&O4ad@=0fj)2N40zpRZ+dfw+Gd`d=J#5)miE;aK8VlE6Mw%)a3_0 zF9VUUlOlil0;uIPc41G%1UoHWLbaboLKC!oh;LAF6b(SEixnv0C@YGOG3Q0*`DFcp_ib5X7B zfp-1@I~8^en^B>=bgET>zYm0jvAW%8X6t^#fuyfV zRgYKIiC9pg1{Hro#tz7(+Cg#$-2hbCL`#U!Vg~i&Wzr3?mxF#+`EB48B2VYKORELK z*(olr5!~wVg*wp9DLeOI4rMD-vM}__|K!Y1bMe*IoFAs;xzH=_)oBiWS)G>k4UaJ} zFE+f5SE_9EZkZh2GCBKbqoBxsHyi?E{~E4mo}Vlpg-;oJo3Lb{d4NsK$g|DQB_~X9 zI$4kWO_@0>Z?}}h%~>9;BIE$UuRJTJyPICVLd>QcWO7N+QL!cL#_$(sLU#%8z_7Xe zW0koiZjhmE=^iJZ`0&lrI|Mw&Tdk#NzG*#zrYvHh>4^A>GKy!5*Wv@Z5>=C`aw^h+ ztgA`#tw=L^``ZF&`r4k{3GIwNM2NxkY;5YcZC7?q%xpp&q4Vu?*xqHPH_{YE_r;~PgRaB6Xm518Zk30&bm|RV$_T-_q8za zDura#tU<4RFe56679&fO|+0{SrFkC$7o#)E|MqK^Y=!8?dyiQ?rGTi`~x>Ib? zxsn7j-pP_6dAzfe&IBVPuBeBQ@m{dL|Ee3s{>Ihysb~aH zvb(D<#3@_f0tPIKRFM2g}VNJ&e4MAP5r^4g1{>= zRM3Z;RszD4rU7bcUot}QQ!3@#n%P2`t8Vmk&E-~7J2jNJJv z4{Gv*>JjTI`t?|A1&NiUstD$#z9iV4vI%}nMF~bzVS+zX8G=P=-`A0DA?rvwPH-c= zW(s!h%wx<3If?qOX}dG!_5>w}GBbN<2nRDZ!BD2c{LK|{U{O$4T|JiRrrCV``6~Y@ zUszH7=~-8xBEGj@T!FK}o0+6wv=shS>VYYYP@Ep(uq$wM)@C9{T|FaP4a2Th*}91D zA)3)e#D9lmZTMJCl+pXLZRYDTgQ Date: Thu, 22 Aug 2024 21:59:22 +0800 Subject: [PATCH 3/3] fix(*): fix nonce modifying --- frame/hybrid-vm-port/src/port.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/frame/hybrid-vm-port/src/port.rs b/frame/hybrid-vm-port/src/port.rs index 38af186..8d54d3e 100644 --- a/frame/hybrid-vm-port/src/port.rs +++ b/frame/hybrid-vm-port/src/port.rs @@ -348,7 +348,7 @@ impl Pallet { }; let info = pallet_contracts::Pallet::::bare_call( - origin, + origin.clone(), t.into(), balance, weight_limit, @@ -362,8 +362,7 @@ impl Pallet { match info.result { Ok(return_value) => { if !return_value.did_revert() { - // because return_value.data = MessageResult, so, the - // first byte is zhe Ok() Code, be removed + frame_system::Pallet::::inc_account_nonce(&origin); let err_data = DispatchErrorWithPostInfo { post_info: PostDispatchInfo { actual_weight: Some(info.gas_consumed),