1
2
3
4
5
6
7
8
9
10
11
| package main
import ( "context" "crypto/ecdsa" "crypto/elliptic" "crypto/rand" "crypto/sha256" "encoding/hex" "errors" "fmt" "math/big" "math/rand" "math/big" "time"
"github.com/ethereum/go-ethereum""github.com/ethereum/go-ethereum/accounts/abi/bind""github.com/ethereum/go-ethereum/common""github.com/ethereum/go-ethereum/common/hex""github.com/ethereum/go-ethereum/core""github.com/ethereum/go-ethereum/crypto""github.com/ethereum/go-ethereum/ethclient""github.com/ethereum/go-ethereum/params""github.com/ethereum/go-ethereum/rpc"
)
// 创建多个账户func createAccounts(count int) (\[\]_ecdsa.PrivateKey, \[\]common.Address) { privateKeys := make(\[\]_ecdsa.PrivateKey, count) addresses := make(\[\]common.Address, count) for I := 0; I < count; i++ { privateKey, err := crypto.GenerateKey() if err != nil { panic(err) } privateKeys\[i\] = privateKey addresses\[i\] = crypto.PubkeyToAddress(privateKey.PublicKey) } return privateKeys, addresses}
// 分配资源func distributeResources(client _ethclient.Client, privateKeys \[\]_ecdsa.PrivateKey, addresses \[\]common.Address, resourceAmount \*big.Int) { // 创建合约实例 contractAddress := common.HexToAddress("0x123456789012345678901234567890123456789") contractABI := \`\[{"constant":false,"inputs":\[{"name":"\_to","type":"address"},{"name":"\_value","type":"uint256"}\],"name":"transfer","outputs":\[\],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":\[\],"name":"balanceOf","outputs":\[{"name":"","type":"uint256"}\],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":\[{"name":"\_spender","type":"address"},{"name":"\_value","type":"uint256"},{"name":"\_deadline","type":"uint256"},{"name":"\_v","type":"uint8"},{"name":"\_r","type":"bytes32"},{"name":"\_s","type":"bytes32"}\],"name":"approve","outputs":\[{"name":"","type":"bool"}\],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":\[{"name":"\_from","type":"address"},{"name":"\_to","type":"address"},{"name":"\_value","type":"uint256"},{"name":"\_data","type":"bytes"}\],"name":"send","outputs":\[\],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":\[{"name":"\_spender","type":"address"},{"name":"\_amount","type":"uint256"},{"name":"\_additionalData","type":"bytes"}\],"name":"increaseAllowance","outputs":\[{"name":"","type":"bool"}\],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":\[{"name":"\_spender","type":"address"},{"name":"\_subtractedValue","type":"uint256"},{"name":"\_additionalData","type":"bytes"}\],"name":"decreaseAllowance","outputs":\[{"name":"","type":"bool"}\],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":\[{"name":"\_spender","type":"address"},{"name":"\_addedValue","type":"uint256"},{"name":"\_additionalData","type":"bytes"}\],"name":"approveAndCall","outputs":\[{"name":"","type":"bool"}\],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":\[{"name":"\_from","type":"address"},{"name":"\_to","type":"address"},{"name":"\_value","type":"uint256"},{"name":"\_data","type":"bytes"},{"name":"\_overload","type":"bool"},{"name":"\_gasPrice","type":"uint256"},{"name":"\_gas","type":"uint256"}\],"name":"sendWithGasPriceAndGas","outputs":\[\],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":\[{"name":"\_from","type":"address"},{"name":"\_to","type":"address"},{"name":"\_value","type":"uint256"},{"name":"\_data","type":"bytes"},{"name":"\_overload","type":"bool"},{"name":"\_gasPrice","type":"uint256"},{"name":"\_gas","type":"uint256"},{"name":"\_nonce","type":"uint256"}\],"name":"sendWithGasPriceAndGasAndNonce","outputs":\[\],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":\[{"name":"\_spender","type":"address"},{"name":"\_amount","type":"uint256"},{"name":"\_additionalData","type":"bytes"},{"name":"\_nonce","type":"uint
|