No funded issue found.
Check out the Issue Explorer
Be the OSS Funding you wish to see in the world.
Looking to fund some work? You can submit a new Funded Issue here .
Time left
Opened
Issue Type
Workers Auto Approve
Project Type
Time Commitment
Experience Level
Permissions
Accepted
Reserved For
Create four-byte signature search tool in Go
great-hill-corporation
Go, keccak256
### Instructions
After unzipping the data files found in the folder ./src/other/find4Byte and using the same techniques as are used by the Solidity compiler to build 4-byte codes out of canonical function signatures, cross multiply a list of the 100,000 most commonly-used English words (provided in the file `function_names.csv`) with 680 argument lists (provided in the file `function_signatures.csv`) searching for the given 4-byte code by applying keccak256 to each resulting function signature.
The delivered code should be
- written in 'Go',
- should be able to parse a simple command line that includes one or more four byte codes (each starting with `0x`), and
- deliver matches to the `standard output`, while delivering progress to `standard err`.
The search should be done in parallel and be as fast as possible. Use of Go channels is preferred.
Even if a given four-byte code is found, the program should continue searching as there may be multiple matches the canonical signature. We would like to find all matches.
C++ like pseudo code follows:
### Pseudo Code in C++ (the deliverable should be in 'Go')
int main(int argc, char *argv[]) {
if (argc != 2) return 0;
search = argv[1];
names = file containing 100,000 common English words
sigs = file containing ~700 function signatures
cout << "Scanning " << names.size() << " names ";
cout << "and " << sigs.size() << " signatures (";
cout << (names.size() * sigs.size()) << " total) for 4-byte code " << search << endl;
for (every name : names) {
for (every sig : sigs) {
canonical = name + "(" + sig + ")";
fourByte = '0x' + keccak256(canonical).substr(0, 8);
if (fourByte == search) {
cout << "Found: " << fourByte << "\t" << canonical << endl;
} else {
cerr << "Scanning << canonical << "\r";
cerr.flush();
}
}
}
return 1;
}
Setup your profile
Tell us a little about you:
Skills
No results found for [[search]] .
Type to search skills..
Bio Required
[[totalcharacter]] / 240
Are you currently looking for work?
[[ option.string ]]
Next
Setup your profile
Our tools are based on the principles of earn (💰), learn (📖), and meet (💬).
Select the ones you are interested in. You can change it later in your settings.
I'm also an organization manager looking for a great community.
Back
Next
Save
Enable your organization profile
Gitcoin products can help grow community around your brand. Create your tribe, events, and incentivize your community with bounties. Announce new and upcoming events using townsquare. Find top-quality hackers and fund them to work with you on a grant.
These are the organizations you own. If you don't see your organization here please be sure that information is public on your GitHub profile. Gitcoin will sync this information for you.
Select the products you are interested in:
Out of the box you will receive Tribes Lite for your organization. Please provide us with a contact email:
Email
Back
Save