git.delta.rocks / unique-network / refs/commits / 1fe3f60bce5f

difftreelog

refactor

Trubnikov Sergey2022-10-25parent: #1602901.patch.diff
in: master

2 files changed

modifiedcrates/evm-coder/procedural/src/solidity_interface.rsdiffbeforeafterboth
--- a/crates/evm-coder/procedural/src/solidity_interface.rs
+++ b/crates/evm-coder/procedural/src/solidity_interface.rs
@@ -734,8 +734,14 @@
 			const #screaming_name_signature: ::evm_coder::custom_signature::FunctionSignature = #custom_signature;
 			#[doc = #selector_str]
 			const #screaming_name: ::evm_coder::types::bytes4 = {
+				let mut data = [0_u8; Self::#screaming_name_signature.unit.len];
+				let mut pos = 0;
+				while pos < Self::#screaming_name_signature.unit.len {
+					data[pos] = Self::#screaming_name_signature.unit.data[pos];
+					pos += 1;
+				}
 				let a = ::evm_coder::sha3_const::Keccak256::new()
-				.update_with_size(&Self::#screaming_name_signature.data, Self::#screaming_name_signature.len)
+				.update(&data)
 				.finalize();
 				[a[0], a[1], a[2], a[3]]
 			};
@@ -953,9 +959,9 @@
 				cs
 			}
 		);
-		// println!("!!!!! {}", custom_signature);
 		let is_payable = self.has_value_args;
-		let out = quote! {
+
+		quote! {
 			SolidityFunction {
 				docs: &[#(#docs),*],
 				selector_str: #selector_str,
@@ -972,9 +978,7 @@
 				),
 				result: <UnnamedArgument<#result>>::default(),
 			}
-		};
-		// println!("@@@ {}", out);
-		out
+		}
 	}
 }
 
modifiedcrates/evm-coder/src/custom_signature.rsdiffbeforeafterboth
1313
14#[derive(Debug)]14#[derive(Debug)]
15pub struct FunctionSignature {15pub struct FunctionSignature {
16 pub data: [u8; SIGNATURE_SIZE_LIMIT],16 pub unit: SignatureUnit,
17 pub len: usize,
18
19 preferences: SignaturePreferences,17 preferences: SignaturePreferences,
20}18}
30 crate::make_signature!(@copy(delimiter.data, dst, delimiter.len, dst_offset));28 crate::make_signature!(@copy(delimiter.data, dst, delimiter.len, dst_offset));
31 }29 }
32 FunctionSignature {30 FunctionSignature {
31 unit: SignatureUnit {
33 data: dst,32 data: dst,
34 len: dst_offset,33 len: dst_offset,
34 },
35 preferences,35 preferences,
36 }36 }
37 }37 }
40 signature: FunctionSignature,40 signature: FunctionSignature,
41 param: SignatureUnit,41 param: SignatureUnit,
42 ) -> FunctionSignature {42 ) -> FunctionSignature {
43 let mut dst = signature.data;43 let mut dst = signature.unit.data;
44 let mut dst_offset = signature.len;44 let mut dst_offset = signature.unit.len;
45 crate::make_signature!(@copy(param.data, dst, param.len, dst_offset));45 crate::make_signature!(@copy(param.data, dst, param.len, dst_offset));
46 if let Some(ref delimiter) = signature.preferences.param_delimiter {46 if let Some(ref delimiter) = signature.preferences.param_delimiter {
47 crate::make_signature!(@copy(delimiter.data, dst, delimiter.len, dst_offset));47 crate::make_signature!(@copy(delimiter.data, dst, delimiter.len, dst_offset));
48 }48 }
49 FunctionSignature {49 FunctionSignature {
50 unit: SignatureUnit {
50 data: dst,51 data: dst,
51 len: dst_offset,52 len: dst_offset,
53 },
52 ..signature54 ..signature
53 }55 }
54 }56 }
5557
56 pub const fn done(signature: FunctionSignature, owerride: bool) -> FunctionSignature {58 pub const fn done(signature: FunctionSignature, owerride: bool) -> FunctionSignature {
57 let mut dst = signature.data;59 let mut dst = signature.unit.data;
58 let mut dst_offset = signature.len - if owerride { 1 } else { 0 };60 let mut dst_offset = signature.unit.len - if owerride { 1 } else { 0 };
59 if let Some(ref delimiter) = signature.preferences.close_delimiter {61 if let Some(ref delimiter) = signature.preferences.close_delimiter {
60 crate::make_signature!(@copy(delimiter.data, dst, delimiter.len, dst_offset));62 crate::make_signature!(@copy(delimiter.data, dst, delimiter.len, dst_offset));
61 }63 }
62 if let Some(ref name) = signature.preferences.close_name {64 if let Some(ref name) = signature.preferences.close_name {
63 crate::make_signature!(@copy(name.data, dst, name.len, dst_offset));65 crate::make_signature!(@copy(name.data, dst, name.len, dst_offset));
64 }66 }
65 FunctionSignature {67 FunctionSignature {
68 unit: SignatureUnit {
66 data: dst,69 data: dst,
67 len: dst_offset,70 len: dst_offset,
71 },
68 ..signature72 ..signature
69 }73 }
70 }74 }
7175
72 pub fn as_str(&self) -> &str {76 pub fn as_str(&self) -> &str {
73 from_utf8(&self.data[..self.len]).expect("bad utf-8")77 from_utf8(&self.unit.data[..self.unit.len]).expect("bad utf-8")
74 }78 }
75}79}
7680
335 (<u32>::SIGNATURE),339 (<u32>::SIGNATURE),
336 (<Vec<u32>>::SIGNATURE),340 (<Vec<u32>>::SIGNATURE),
337 );341 );
338 const NAME: [u8; SIG.len] = {342 const NAME: [u8; SIG.unit.len] = {
339 let mut name: [u8; SIG.len] = [0; SIG.len];343 let mut name: [u8; SIG.unit.len] = [0; SIG.unit.len];
340 let mut i = 0;344 let mut i = 0;
341 while i < SIG.len {345 while i < SIG.unit.len {
342 name[i] = SIG.data[i];346 name[i] = SIG.unit.data[i];
343 i += 1;347 i += 1;
344 }348 }
345 name349 name