return { name, parametersTypes };
}
- function calculateOptimizedName(name, parametersTypes, minimum) {
- let counter = 0;
- function generate(name, parametersTypes) {
- const functionName = `${name}_${counter.toString(36)}(${parametersTypes})`;
- counter++;
-
- const hash = validate(functionName);
- if (!hash) {
- return generate(name, parametersTypes);
+ function validate(functionName, minimum) {
+ const byteArray = keccak256(encoder.encode(functionName)).slice(0, 4);
+ for (let i = 0; i < minimum; i++) {
+ if (byteArray[i] === 0) {
+ if (i + 1 === minimum) {
+ const hash = `0x${[...byteArray].map(b => b.toString(16).padStart(2, '0')).join('')}`;
+ return hash;
+ }
}
else {
- return { functionName, hash };
+ return false;
}
}
+ }
- function validate(functionName) {
- const byteArray = keccak256(encoder.encode(functionName)).slice(0, 4);
- for (let i = 0; i < minimum; i++) {
- if (byteArray[i] === 0) {
- if (i + 1 === minimum) {
- const hash = `0x${[...byteArray].map(b => b.toString(16).padStart(2, '0')).join('')}`;
- return hash;
- }
- }
- else {
- return false;
- }
- }
+ function calculateOptimizedName(name, parametersTypes, minimum) {
+ let counter = 0;
+ let functionName = `${name}_${counter}(${parametersTypes})`;
+ let hash = validate(functionName, minimum);
+ while (!hash) {
+ counter++;
+ functionName = `${name}_${counter.toString(36)}(${parametersTypes})`;
+ hash = validate(functionName, minimum);
}
-
- return generate(name, parametersTypes);
+ return { functionName, hash };
}
document.querySelector('form').addEventListener('submit', e => {