diff options
author | Viktor TrĂ³n <viktor.tron@gmail.com> | 2016-08-28 19:34:59 +0800 |
---|---|---|
committer | Felix Lange <fjl@twurst.com> | 2016-08-29 19:39:25 +0800 |
commit | 6c8b023298694175d05bf2a14c85f44d73625695 (patch) | |
tree | 8a72be292168dbdabaaf31a97d41f6d6d68ee597 /contracts/chequebook/gencode.go | |
parent | 5fc032a9d16ac6ea1dc020f06e44c24c94a361a7 (diff) | |
download | dexon-6c8b023298694175d05bf2a14c85f44d73625695.tar dexon-6c8b023298694175d05bf2a14c85f44d73625695.tar.gz dexon-6c8b023298694175d05bf2a14c85f44d73625695.tar.bz2 dexon-6c8b023298694175d05bf2a14c85f44d73625695.tar.lz dexon-6c8b023298694175d05bf2a14c85f44d73625695.tar.xz dexon-6c8b023298694175d05bf2a14c85f44d73625695.tar.zst dexon-6c8b023298694175d05bf2a14c85f44d73625695.zip |
contracts/chequebook: add chequebook contract wrapper
The wrapper code is adapted from the swarm/services/chequebook package
with the following mostly cosmetic changes:
* The code now uses the new Go API interfaces to query balances. Some
minor functional changes were required to make this work.
* The package no longer depends on swarm/services/swap/swap. References
to swap.Promise are replaced by interface{}, the base type of Promise.
This is temporary.
* The contract wrapper has been regenerated with latest abigen
and solc v0.3.6.
* There is a new generator that creates the 'deployed code' variable.
* Documentation comments now follow the recommended godoc style.
* [CHEQUEBOOK] log prefixes are gone.
* LGPL license headers have been added to all files.
Diffstat (limited to 'contracts/chequebook/gencode.go')
-rw-r--r-- | contracts/chequebook/gencode.go | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/contracts/chequebook/gencode.go b/contracts/chequebook/gencode.go new file mode 100644 index 000000000..f52c351e4 --- /dev/null +++ b/contracts/chequebook/gencode.go @@ -0,0 +1,73 @@ +// 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") + testAccount = core.GenesisAccount{ + Address: crypto.PubkeyToAddress(testKey.PublicKey), + Balance: big.NewInt(500000000000), + } +) + +func main() { + backend := backends.NewSimulatedBackend(testAccount) + 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(`// TODO: insert license header + +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) + } +} |