hashAuthorization
Computes an Authorization hash in EIP-7702 format
hashAuthorization
Computes an Authorization hash in EIP-7702 format: keccak256('0x05' || rlp([chain_id, address, nonce])).
Import
import "github.com/ChefBingbong/viem-go/utils/authorization"Usage
import "github.com/ChefBingbong/viem-go/utils/authorization"
hash, err := authorization.HashAuthorization(authorization.HashAuthorizationParameters{ AuthorizationRequest: authorization.AuthorizationRequest{ Address: "0x1234567890123456789012345678901234567890", ChainId: 1, Nonce: 0, },})if err != nil { log.Fatal(err)}fmt.Printf("Hash: %s", hash)// Hash: 0x...
// Get hash as byteshashBytes, err := authorization.HashAuthorizationBytes(authorization.AuthorizationRequest{ Address: "0x1234567890123456789012345678901234567890", ChainId: 1, Nonce: 0,})if err != nil { log.Fatal(err)}Returns
- Type:
(string, error)forHashAuthorization/HashAuthorizationHex,([]byte, error)forHashAuthorizationBytes
The authorization hash. HashAuthorization/HashAuthorizationHex returns a hex string with 0x prefix, HashAuthorizationBytes returns raw bytes.
Parameters
params (required)
- Type:
authorization.HashAuthorizationParameters
Parameters for hashing an authorization.
params := authorization.HashAuthorizationParameters{ AuthorizationRequest: authorization.AuthorizationRequest{ Address: "0x1234567890123456789012345678901234567890", ChainId: 1, Nonce: 0, },}
hash, _ := authorization.HashAuthorization(params)params.AuthorizationRequest (required)
- Type:
authorization.AuthorizationRequest
The authorization request containing address, chain ID, and nonce.
authRequest := authorization.AuthorizationRequest{ Address: "0x1234567890123456789012345678901234567890", ChainId: 1, Nonce: 0,}
params := authorization.HashAuthorizationParameters{ AuthorizationRequest: authRequest,}params.AuthorizationRequest.Address (required)
- Type:
string
The contract address being authorized. Can also use ContractAddress for compatibility.
authRequest := authorization.AuthorizationRequest{ Address: "0x1234567890123456789012345678901234567890", // ...}params.AuthorizationRequest.ChainId (required)
- Type:
int
The chain ID for this authorization.
authRequest := authorization.AuthorizationRequest{ ChainId: 1, // ...}params.AuthorizationRequest.Nonce (required)
- Type:
int
The account nonce for this authorization.
authRequest := authorization.AuthorizationRequest{ Nonce: 0, // ...}Functions
HashAuthorization
Computes the authorization hash:
hash, _ := authorization.HashAuthorization(params)
HashAuthorizationHex
Computes the authorization hash and returns a hex string:
hash, _ := authorization.HashAuthorizationHex(authRequest)
HashAuthorizationBytes
Computes the authorization hash and returns bytes:
hashBytes, _ := authorization.HashAuthorizationBytes(authRequest)
Hash Format
The authorization hash is computed as:
keccak256('0x05' || rlp([chain_id, address, nonce]))
Where:
0x05is the EIP-7702 magic byte- The RLP-encoded list contains chain ID, address, and nonce
Notes
- Used in EIP-7702 transactions for contract account authorization
- The address field is required (cannot be empty)
- The hash is used to authorize contract accounts to act as EOAs