mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-10 23:14:27 +00:00
63 lines
1.7 KiB
Go
63 lines
1.7 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"log"
|
|
"math/big"
|
|
|
|
"github.com/ethereum/go-ethereum/common"
|
|
"github.com/ethereum/go-ethereum/core/types"
|
|
"github.com/ethereum/go-ethereum/crypto"
|
|
"github.com/ethereum/go-ethereum/ethclient"
|
|
)
|
|
|
|
func main() {
|
|
// Admin private key
|
|
privHex := "badb9f5dec5b628a70ce52d143f5ac75e6ef5fda9afedfdd423bb539552b40cc"
|
|
priv, err := crypto.HexToECDSA(privHex)
|
|
if err != nil {
|
|
log.Fatalf("Failed to parse admin key: %v", err)
|
|
}
|
|
adminAddr := crypto.PubkeyToAddress(priv.PublicKey)
|
|
|
|
// Target address to whitelist (node1 - Clique signer)
|
|
targetAddr := common.HexToAddress("0xca6b49ee60cdd276ab503fbd6fb80a3cfbc06ffc")
|
|
|
|
client, err := ethclient.Dial("http://localhost:8545")
|
|
if err != nil {
|
|
log.Fatalf("Failed to connect to node: %v", err)
|
|
}
|
|
|
|
// Prepare input: mode=1, admin address, target address
|
|
input := []byte{1}
|
|
input = append(input, adminAddr.Bytes()...)
|
|
input = append(input, targetAddr.Bytes()...)
|
|
|
|
nonce, err := client.PendingNonceAt(context.Background(), adminAddr)
|
|
if err != nil {
|
|
log.Fatalf("Failed to get nonce: %v", err)
|
|
}
|
|
gasPrice, err := client.SuggestGasPrice(context.Background())
|
|
if err != nil {
|
|
log.Fatalf("Failed to get gas price: %v", err)
|
|
}
|
|
|
|
to := common.BytesToAddress([]byte{0x01, 0x00})
|
|
var value = big.NewInt(0)
|
|
var gasLimit uint64 = 100000
|
|
|
|
tx := types.NewTransaction(nonce, to, value, gasLimit, gasPrice, input)
|
|
|
|
chainID := big.NewInt(1234)
|
|
signedTx, err := types.SignTx(tx, types.NewEIP155Signer(chainID), priv)
|
|
if err != nil {
|
|
log.Fatalf("Failed to sign tx: %v", err)
|
|
}
|
|
|
|
err = client.SendTransaction(context.Background(), signedTx)
|
|
if err != nil {
|
|
log.Fatalf("Failed to send tx: %v", err)
|
|
}
|
|
|
|
log.Printf("Whitelisting transaction sent: %s", signedTx.Hash().Hex())
|
|
}
|