// 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 . // +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/dexon-foundation/dexon/accounts/abi/bind" "github.com/dexon-foundation/dexon/accounts/abi/bind/backends" "github.com/dexon-foundation/dexon/contracts/chequebook/contract" "github.com/dexon-foundation/dexon/core" "github.com/dexon-foundation/dexon/crypto" ) var ( testKey, _ = crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291") testAlloc = core.GenesisAlloc{ crypto.PubkeyToAddress(testKey.PublicKey): {Balance: big.NewInt(500000000000)}, } ) func main() { backend := backends.NewSimulatedBackend(testAlloc, uint64(100000000)) 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) } }