1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- // Copyright 2016 The go-ethereum Authors
- // This file is part of the go-ethereum library.
- //
- // The go-ethereum library is free software: you can redistribute it and/or modify
- // it under the terms of the GNU Lesser General Public License as published by
- // the Free Software Foundation, either version 3 of the License, or
- // (at your option) any later version.
- //
- // The go-ethereum library is distributed in the hope that it will be useful,
- // but WITHOUT ANY WARRANTY; without even the implied warranty of
- // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- // GNU Lesser General Public License for more details.
- //
- // You should have received a copy of the GNU Lesser General Public License
- // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
- // +build none
- // This program generates contract/code.go, which contains the chequebook code
- // after deployment.
- package main
- import (
- "fmt"
- "io/ioutil"
- "math/big"
- "github.com/ethereum/go-ethereum/accounts/abi/bind"
- "github.com/ethereum/go-ethereum/accounts/abi/bind/backends"
- "github.com/ethereum/go-ethereum/contracts/chequebook/contract"
- "github.com/ethereum/go-ethereum/core"
- "github.com/ethereum/go-ethereum/crypto"
- )
- var (
- testKey, _ = crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291")
- testAlloc = core.GenesisAlloc{
- crypto.PubkeyToAddress(testKey.PublicKey): {Balance: big.NewInt(500000000000)},
- }
- )
- func main() {
- backend := backends.NewSimulatedBackend(testAlloc)
- auth := bind.NewKeyedTransactor(testKey)
- // Deploy the contract, get the code.
- addr, _, _, err := contract.DeployChequebook(auth, backend)
- if err != nil {
- panic(err)
- }
- backend.Commit()
- code, err := backend.CodeAt(nil, addr, nil)
- if err != nil {
- panic(err)
- }
- if len(code) == 0 {
- panic("empty code")
- }
- // Write the output file.
- content := fmt.Sprintf(`package contract
- // ContractDeployedCode is used to detect suicides. This constant needs to be
- // updated when the contract code is changed.
- const ContractDeployedCode = "%#x"
- `, code)
- if err := ioutil.WriteFile("contract/code.go", []byte(content), 0644); err != nil {
- panic(err)
- }
- }
|