Type EthSigner
Ethereum private key, opaque type.
Func NewEthSigner
func NewEthSigner(privateKey string) (*EthSigner, error)
Create a Ethereum private key signer from hex string.
input:
privateKey: hex string of private key
return: (*EthSigner, error)
Func (*EthSigner) SignMessage
func (*EthSigner) SignMessage(message []uint8) (PackedEthSignature, error)
Sign the message bytes
input:
output: (String format of PackedEthSignature
, error)
Func (*EthSigner) GetAddress
func (*EthSigner) GetAddress() Address
Get the address of Ethereum
output: Hex string format(with '0x' prefix) of Ethereum address.
example
func TestEthSigner(t *testing.T) {
s := "0xb32593e347bf09436b058fbeabc17ebd2c7c1fa42e542f5f78fc3580faef83b7"
signer, err := sdk.NewEthSigner(s)
assert.Nil(t, err)
msg := []byte("hello world")
signature, err := signer.SignMessage(msg)
assert.Nil(t, err)
assert.Equal(t, signature, "0xa9aa0710adb18f84d4bed8057382fc433c3dcff1bddf3b2b1c2cb11386ef3be4172b5d0688143759d4e744acc434ae4f96575c7fa9096971fd02fb3d2aaa77121c")
address := signer.GetAddress()
assert.Equal(t, address, "0x9e372368c25056d44045e445d72d7b91ce3ee3b1")
}
Type StarkSigner
The signer of Starknet, opaque type.
NewStarkSigner
func NewStarkSigner() *StarkSigner
Create a random Starknet signer
output: *StarkSigner
func StarkSignerNewFromHexStr
func StarkSignerNewFromHexStr(hexStr string) (*StarkSigner, error)
Create a Starknet signer from hex string
input:
hexStr: hex string of private key(with or without 0x
prefix)
func(*StarkSigner) SignMessage
func (*StarkSigner) SignMessage(message []uint8) (StarkECDSASignature, error)
Sign message bytes
input:
example
func TestStarkSigner(t *testing.T) {
s := "0x02c5dbad71c92a45cc4b40573ae661f8147869a91d57b8d9b8f48c8af7f83159"
signer, err := sdk.StarkSignerNewFromHexStr(s)
assert.Nil(t, err)
msg := []byte("hello world")
signature, err := signer.SignMessage(msg)
assert.Nil(t, err)
assert.Equal(t, signature, "0x0226424352505249f119fd6913430aad28321afcff18036139b6fa77c4fad6cc071f3cf1b6bc80b84f261c74613ed3d90e5d11b1cc391b2bbddc70b9b4cc31f9067799101a3d9e6421c4d3950983b004dcfb9061a77a0e3bc2f9032ac8675b3e")
}
Type ZkLinkSigner
ZkLinkSigner
includes the L1 private key(Eth or Starknet) and L3 private key, opaque type.
func NewZkLinkSigner
func NewZkLinkSigner() (*ZkLinkSigner, error)
Create a random seeded ZkLinkSigner
signer, err := sdk.NewZkLinkSigner()
func ZkLinkSignerNewFromHexEthSigner
func ZkLinkSignerNewFromHexEthSigner(ethHexPrivateKey string) (*ZkLinkSigner, error)
Creat a ZkLinkSigner
from eth hex private key.
input:
hexPrivateKey: Eth hex private key string
s := "0xbe725250b123a39dab5b7579334d5888987c72a58f4508062545fe6e08ca94f4"
signer, err = sdk.ZkLinkSignerNewFromHexEthSigner(s)
func ZkLinkSignerNewFromHexStarkSigner
func ZkLinkSignerNewFromHexStarkSigner(hexPrivateKey string) (*ZkLinkSigner, error)
Create a ZkLinkSigner
from Starknet hex private key.
input:
hexPrivateKey: Starknet hex private key string
func ZkLinkSignerNewFromBytes
func ZkLinkSignerNewFromBytes(slice []uint8) (*ZkLinkSigner, error)
Change the bytes to ZkLinkSigner
input:
s := "0x02c5dbad71c92a45cc4b40573ae661f8147869a91d57b8d9b8f48c8af7f83159"
signer, err = sdk.ZkLinkSignerNewFromHexStarkSigner(s)
func (*ZkLinkSigner) PublicKey
func (*ZkLinkSigner) PublicKey() PackedPublicKey
Get the public key of L3 private key
func (*ZkLinkSigner) SignMusig
func (*ZkLinkSigner) SignMusig(msg []uint8) (ZkLinkSignature, error)
Sign a bytes formatted message with L3 private key in ZkLinkSigner.
input::
Example
func TestZkLinkSigner(t *testing.T) {
signer, err := sdk.NewZkLinkSigner()
assert.Nil(t, err)
assert.NotNil(t, signer)
s := "be725250b123a39dab5b7579334d5888987c72a58f4508062545fe6e08ca94f4"
signer, err = sdk.ZkLinkSignerNewFromHexEthSigner(s)
pub_key := signer.PublicKey()
assert.Equal(t, pub_key, "0x7b173e25e484eed3461091430f81b2a5bd7ae792f69701dcb073cb903f812510")
pubkey_hash := sdk.GetPublicKeyHash(pub_key)
assert.Equal(t, pubkey_hash, "0xd8d5fb6a6caef06aa3dc2abdcdc240987e5330fe")
msg := []uint8{0,1,2,3,4,5,6}
signature, err := signer.SignMusig(msg)
assert.Nil(t, err)
assert.NotNil(t, signature)
is_ok := sdk.VerifyMusig(signature, msg)
assert.Equal(t, is_ok, true)
}
func SignChangePubkeyWithEthEcdsaAuth
func (*Signer) SignChangePubkeyWithEthEcdsaAuth(tx *ChangePubKey) (TxSignature, error)
input: tx: ChangePubKey
Sign the ChangePubkey
and get the TxSignature
result, for example:
privateKey := "0xbe725250b123a39dab5b7579334d5888987c72a58f4508062545fe6e08ca94f4"
chainId := sdk.ChainId(1)
accountId := sdk.AccountId(2)
subAccountId := sdk.SubAccountId(4)
newPkHash:= sdk.PubKeyHash("0xd8d5fb6a6caef06aa3dc2abdcdc240987e5330fe")
feeToken := sdk.TokenId(1)
fee := big.NewInt(100)
nonce := sdk.Nonce(100)
ethSignature := sdk.PackedEthSignature("0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001b")
// get current timestamp
now := time.Now()
timeStamp := sdk.TimeStamp(now.Unix())
// create ChangePubKey transaction type without signed
builder := sdk.ChangePubKeyBuilder{
chainId,
accountId,
subAccountId,
newPkHash,
feeToken,
*fee,
nonce,
ðSignature,
timeStamp,
}
tx := sdk.NewChangePubKey(builder)
signer, err := sdk.NewSigner(privateKey, sdk.L1TypeEth)
if err != nil {
return
}
txSignature, err := signer.SignChangePubkeyWithEthEcdsaAuth(tx)
fmt.Println("tx signature: %s", txSignature)
func (*Signer) SignChangePubkeyWithOnchainAuthData
func (*Signer) SignChangePubkeyWithOnchainAuthData(tx *ChangePubKey) (TxSignature, error)
Sign ChangePubkey
with OnChain
auth data
func (*Signer) SignChangePubkeyWithCreate2dataAuth
func (*Signer) SignChangePubkeyWithCreate2dataAuth(tx *ChangePubKey, crate2data Create2Data) (TxSignature, error) {
Sign ChangePubkey
with Create2Data
auth data
Function
func GetPublicKeyHash
func GetPublicKeyHash(publicKey PackedPublicKey) PubKeyHash;
Get the public key hash of L3 PublicKey
arguments:
publicKey: string of L3 PublicKey
return: String of PubKeyHash
assert.Equal(t, pub_key, "0x7b173e25e484eed3461091430f81b2a5bd7ae792f69701dcb073cb903f812510")
pubkey_hash := sdk.GetPublicKeyHash(pub_key)
func EthSignatureOfChangePubkey
func EthSignatureOfChangePubkey (tx *ChangePubKey, ethSigner *EthSigner) (PackedEthSignature, error)
Create the Ethereum signature of ChangePubKey
func ZklinkMainNetUrl
func ZklinkMainNetUrl() string
Get the ZkLink main net url.
func ZklinkTestNetUrl
func ZklinkTestNetUrl() string
Last updated