From 6c8b023298694175d05bf2a14c85f44d73625695 Mon Sep 17 00:00:00 2001 From: Viktor TrĂ³n Date: Sun, 28 Aug 2016 13:34:59 +0200 Subject: 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. --- contracts/chequebook/gencode.go | 73 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 contracts/chequebook/gencode.go (limited to 'contracts/chequebook/gencode.go') 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 . + +// +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) + } +} -- cgit