-
Notifications
You must be signed in to change notification settings - Fork 326
Added web3j code samples #364
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Signed-off-by: Nischal Sharma <[email protected]>
gskril
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
thanks for contributing and sorry for the review delay! just have one comment about labelhash
| ``` | ||
|
|
||
| ```java {{ title: 'Web3j (Java)', variant: 'web3j', link: 'https://docs.web3j.io/4.11.0/advanced/ethereum_name_service/' }} | ||
| byte[] labelHash = NameHash.nameHashAsBytes('label'); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Labelhash is the keccak256 hash of the label (e.g. "nick" in the name "nick.eth"), which is different than applying NameHash.nameHashAsBytes() on the label.
Web3j likely doesn't have a helper function specific to labelhash, but it may have a keccak256 function which can be used in this example.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So NameHash.nameHash Function can be used for both full Name like nick.eth and just label like 'nickIt will give the correct result, thats why there is no ultitly function just for labels as user can use currentNameHash.nameHash` fucntion on label to get the labelHash.
This fuctions returns (Hash.sha3(result)) which is keccak256
Hope it makes sense, let me know if there is still any confusion
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmmm I'm running a test script locally and NameHash.nameHashAsBytes('label') does not return the expected label hash. The expected value for label would be 0x1b036544434cea9770a413fd03e0fb240e1ccbd10a452f7dba85c8eca9ca3eda
I don't know Java well, but futzing around it looks like the code example will have to be a bit lower level like this:
public static String labelHash(String name) {
// Get the label of the name (the part before the earliest '.')
String[] parts = name.split("\\.");
String label = parts[0];
// Keccak256 hash the label and convert to hex string
byte[] labelHash = Hash.sha3(label.getBytes(StandardCharsets.UTF_8));
String labelHashString = Numeric.toHexString(labelHash);
return labelHashString;
}There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@gskril Thanks for pointing out this. I was able to reproduce it, and created a PR for labelHash fucntion - LFDT-web3j/web3j#2140
We will soon release new Web3j with this fix. Thanks
gskril
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry I missed this the first time — would be great if you can include the relevant imports for each example so they're truly copy/paste snippets!
|
|
||
| ```java {{ title: 'Web3j (Java)', variant: 'web3j', link: 'https://docs.web3j.io/4.11.0/advanced/ethereum_name_service/' }} | ||
| byte[] nameHash = NameHash.nameHashAsBytes('luc.eth'); | ||
| String nameHashString = Numeric.toHexString(nameHash) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks like web3j also exposes NameHash.nameHash which returns a hex string directly, so no need to first get the bytes and convert it yourself
|
The docs have been refactored quite a bit since this PR was opened, so I'm closing it for simplicity. It looks like the fix to the upstream library was merged, so I'd be happy to review a new PR if you get around to it! |
This PR adds code samples for Web3j library - https://github.com/hyperledger-web3j/web3j