Why is this failing?
The transaction sender doesn't own the parent node. That will always be the reason that a setSubnodeOwner(...)
call will fail with a "bad jump".
From ENS.sol:
/**
* Transfers ownership of a subnode sha3(node, label) to a new address. May only be
* called by the owner of the parent node.
* @param node The parent node.
* @param label The hash of the label specifying the subnode.
* @param owner The address of the new owner.
*/
function setSubnodeOwner(bytes32 node, bytes32 label, address owner) only_owner(node) {
var subnode = sha3(node, label);
NewOwner(node, label, owner);
records[subnode].owner = owner;
}
// Permits modifications only by the owner of the specified node.
modifier only_owner(bytes32 node) {
if (records[node].owner != msg.sender) throw;
_;
}
The parent node that you need to own is the one you supplied as your first argument, which is:
0x4c6828bff2e6f9cb971ca9a106f0a5a653c8128287fcd8f4e5cf2ab9bd45da73
(according to etherscan)
Why might I not be the owner?
Some of the most likely reasons are:
No one is the owner
Maybe you have not run finalizeAuction()
on your .eth name?
The sender is incorrect
An example scenario is:
- You are juggling several accounts.
- You purchased the name with a non-default account.
- You forgot to set
from
in the setSubnodeOwner(...)
transaction to the owning account.
The node is incorrect
Maybe you own the name, but you calculated the node (aka "namehash") incorrectly. See "Calculating Namehash" in this answer, but with 'eth' instead of 'test'.
For reference, the namehash of 'eth' is:
> web3.toHex(ens.namehash('eth'))
'0x93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae'
(source: ens.py)
For this specific case
There's still not enough information to be sure. We can eliminate "The sender is incorrect" because no one owns the node that was the first argument to your call. Check out the other two reasons, and feel free to comment for follow-up.