aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDeterminant <tederminant@gmail.com>2020-07-01 17:29:39 -0400
committerDeterminant <tederminant@gmail.com>2020-07-01 17:29:39 -0400
commit2d396b3c69a26e4096ccb376c012911d299c68c7 (patch)
treefdf0269f63598620db2c26459e596727df7c0d02
parenta00cf4e6318e0dcda72725995653011c545e13ff (diff)
make sure getBalance() works
-rw-r--r--core/genesis.go1
-rw-r--r--core/vm/instructions.go2
-rw-r--r--examples/multicoin/main.go11
-rw-r--r--examples/multicoin/mc_test.sol5
4 files changed, 13 insertions, 6 deletions
diff --git a/core/genesis.go b/core/genesis.go
index 7378a53..ef490bf 100644
--- a/core/genesis.go
+++ b/core/genesis.go
@@ -266,7 +266,6 @@ func (g *Genesis) ToBlock(db ethdb.Database) *types.Block {
}
if account.MCBalance != nil {
statedb.ForceEnableMultiCoin(addr)
- fmt.Println("enable", addr.Hex())
for coinID, value := range account.MCBalance {
statedb.AddBalanceMultiCoin(addr, coinID, value)
}
diff --git a/core/vm/instructions.go b/core/vm/instructions.go
index 91233b3..ecdccbd 100644
--- a/core/vm/instructions.go
+++ b/core/vm/instructions.go
@@ -18,7 +18,6 @@ package vm
import (
"errors"
- "fmt"
"math/big"
"github.com/ava-labs/coreth/core/types"
@@ -418,7 +417,6 @@ func opBalance(pc *uint64, interpreter *EVMInterpreter, contract *Contract, memo
func opBalanceMultiCoin(pc *uint64, interpreter *EVMInterpreter, contract *Contract, memory *Memory, stack *Stack) ([]byte, error) {
addr, cid := stack.pop(), stack.pop()
- fmt.Println(addr, cid)
stack.push(interpreter.evm.StateDB.GetBalanceMultiCoin(common.BigToAddress(addr), common.BigToHash(cid)))
return nil, nil
}
diff --git a/examples/multicoin/main.go b/examples/multicoin/main.go
index ad23e32..9d1970a 100644
--- a/examples/multicoin/main.go
+++ b/examples/multicoin/main.go
@@ -55,7 +55,7 @@ func main() {
bob, _ := coreth.NewKey(rand.Reader)
g := new(core.Genesis)
- b := `{"config":{"chainId":1,"homesteadBlock":0,"daoForkBlock":0,"daoForkSupport":true,"eip150Block":0,"eip150Hash":"0x2086799aeebeae135c246c65021c82b4e15a2c451340993aacfd2751886514f0","eip155Block":0,"eip158Block":0,"byzantiumBlock":0,"constantinopleBlock":0,"petersburgBlock":0},"nonce":"0x0","timestamp":"0x0","extraData":"0x00","gasLimit":"0x5f5e100","difficulty":"0x0","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","coinbase":"0x0000000000000000000000000000000000000000","alloc":{"751a0b96e1042bee789452ecb20253fba40dbe85":{"balance":"0x1000000000000000", "mcbalance": {"0x0000000000000000000000000000000000000000000000000000000000000000": 1000000000000000000}}, "0100000000000000000000000000000000000000": {"code": "0x730000000000000000000000000000000000000000301460806040526004361061004b5760003560e01c80631e01043914610050578063abb24ba014610092578063b6510bb3146100a9575b600080fd5b61007c6004803603602081101561006657600080fd5b8101908080359060200190929190505050610118565b6040518082815260200191505060405180910390f35b81801561009e57600080fd5b506100a761013b565b005b8180156100b557600080fd5b50610116600480360360808110156100cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919050505061013e565b005b60003373ffffffffffffffffffffffffffffffffffffffff1682905d9050919050565b5c565b8373ffffffffffffffffffffffffffffffffffffffff1681836108fc8690811502906040516000604051808303818888878c8af69550505050505015801561018a573d6000803e3d6000fd5b505050505056fea2646970667358221220477c0e55c25708d36d55abae8a51496c16bc5d28bc1ee6a9963c304afbacdc3464736f6c634300060a0033", "balance": "0x0", "mcbalance": {}}},"number":"0x0","gasUsed":"0x0","parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000"}`
+ b := `{"config":{"chainId":1,"homesteadBlock":0,"daoForkBlock":0,"daoForkSupport":true,"eip150Block":0,"eip150Hash":"0x2086799aeebeae135c246c65021c82b4e15a2c451340993aacfd2751886514f0","eip155Block":0,"eip158Block":0,"byzantiumBlock":0,"constantinopleBlock":0,"petersburgBlock":0},"nonce":"0x0","timestamp":"0x0","extraData":"0x00","gasLimit":"0x5f5e100","difficulty":"0x0","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","coinbase":"0x0000000000000000000000000000000000000000","alloc":{"751a0b96e1042bee789452ecb20253fba40dbe85":{"balance":"0x1000000000000000", "mcbalance": {"0x0000000000000000000000000000000000000000000000000000000000000000": 1000000000000000000}}, "0100000000000000000000000000000000000000": {"code": "0x730000000000000000000000000000000000000000301460806040526004361061004b5760003560e01c80631e01043914610050578063abb24ba014610092578063b6510bb3146100a9575b600080fd5b61007c6004803603602081101561006657600080fd5b8101908080359060200190929190505050610118565b6040518082815260200191505060405180910390f35b81801561009e57600080fd5b506100a761013b565b005b8180156100b557600080fd5b50610116600480360360808110156100cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919050505061013e565b005b60003073ffffffffffffffffffffffffffffffffffffffff1682905d9050919050565b5c565b8373ffffffffffffffffffffffffffffffffffffffff1681836108fc8690811502906040516000604051808303818888878c8af69550505050505015801561018a573d6000803e3d6000fd5b505050505056fea26469706673582212200bc9fda886770285cc0f33cf0c674c080debc2ad79572ecf0c9f20d729b9487264736f6c634300060a0033", "balance": "0x0", "mcbalance": {}}},"number":"0x0","gasUsed":"0x0","parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000"}`
k := "0xabd71b35d559563fea757f0f5edbde286fb8c043105b15abb7cd57189306d7d1"
err := json.Unmarshal([]byte(b), g)
checkError(err)
@@ -149,6 +149,15 @@ func main() {
chain.AddRemoteTxs([]*types.Transaction{signedTx})
nonce++
}
+ code, err = a.Pack("updateBalance", big.NewInt(0))
+ tx = types.NewTransaction(nonce, contractAddr, big.NewInt(0), uint64(gasLimit), gasPrice, code)
+ signedTx, err = types.SignTx(tx, types.NewEIP155Signer(chainID), genKey.PrivateKey)
+ checkError(err)
+ chain.AddRemoteTxs([]*types.Transaction{signedTx})
+ nonce++
+
+ checkError(err)
+
}()
}
return false
diff --git a/examples/multicoin/mc_test.sol b/examples/multicoin/mc_test.sol
index 031cba0..a7d468e 100644
--- a/examples/multicoin/mc_test.sol
+++ b/examples/multicoin/mc_test.sol
@@ -2,16 +2,17 @@ pragma solidity >=0.6.0;
contract MCTest {
address constant MultiCoin = 0x0100000000000000000000000000000000000000;
+ uint256 balance;
constructor() public {
// enable multi-coin functionality (it is disabled by default)
(bool success,) = MultiCoin.delegatecall(abi.encodeWithSignature("enableMultiCoin()"));
require(success);
}
- function getBalance(uint256 coinid) public returns (uint256) {
+ function updateBalance(uint256 coinid) public {
(bool success, bytes memory data) = MultiCoin.delegatecall(abi.encodeWithSignature("getBalance(uint256)", coinid));
require(success);
- return abi.decode(data, (uint256));
+ balance = abi.decode(data, (uint256));
}
function deposit() public payable {}