From c182b6ceb2dd14cb64c1f1a6a591b8889e5b182d Mon Sep 17 00:00:00 2001 From: dinhln89 Date: Mon, 25 Jun 2018 15:02:08 +0700 Subject: [PATCH] Fixed add unit test tx sign for validators. --- contracts/utils_test.go | 42 +++++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/contracts/utils_test.go b/contracts/utils_test.go index 64cb87ca11..c5bca88b09 100644 --- a/contracts/utils_test.go +++ b/contracts/utils_test.go @@ -26,39 +26,41 @@ func TestSendTxSign(t *testing.T) { keys := []*ecdsa.PrivateKey{acc2Key, acc3Key} signer := types.HomesteadSigner{} - genesis := core.GenesisAlloc{ - acc1Addr: {Balance: big.NewInt(1000000000)}, - common.StringToAddress("0x0000000000000000000000000000000000000088"): { - Balance: big.NewInt(0), - Code: []byte("0x6080604052600436106100f0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168062a95501146100f557806302aa9be21461017857806306a49fce146101c557806328265294146102315780632d15cc0414610288578063302b6872146103205780633477ee2e1461039757806351cff8d91461040457806358e7525f146104475780636dd7d8ea1461049e578063a3ec7965146104d4578063ae6e43f51461055d578063d09f1ab4146105a0578063d51b9e93146105cb578063d55b7dff14610626578063d6f0948c14610651578063da67b5991461069f575b600080fd5b34801561010157600080fd5b50610136600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061075b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561018457600080fd5b506101c3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107c6565b005b3480156101d157600080fd5b506101da610aed565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561021d578082015181840152602081019050610202565b505050509050019250505060405180910390f35b34801561023d57600080fd5b50610272600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b7b565b6040518082815260200191505060405180910390f35b34801561029457600080fd5b506102c9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bc6565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561030c5780820151818401526020810190506102f1565b505050509050019250505060405180910390f35b34801561032c57600080fd5b50610381600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c93565b6040518082815260200191505060405180910390f35b3480156103a357600080fd5b506103c260048036038101908080359060200190929190505050610d1c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561041057600080fd5b50610445600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d5a565b005b34801561045357600080fd5b50610488600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111c7565b6040518082815260200191505060405180910390f35b6104d2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611212565b005b3480156104e057600080fd5b5061055b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506115e7565b005b34801561056957600080fd5b5061059e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117e2565b005b3480156105ac57600080fd5b506105b5611b57565b6040518082815260200191505060405180910390f35b3480156105d757600080fd5b5061060c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b5c565b604051808215151515815260200191505060405180910390f35b34801561063257600080fd5b5061063b611bb4565b6040518082815260200191505060405180910390f35b61069d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001919091929391929390505050611bc2565b005b3480156106ab57600080fd5b506106e0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f1e565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610720578082015181840152602081019050610705565b50505050905090810190601f16801561074d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8181806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561085557600080fd5b6108a9836000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003015461200190919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003018190555061097f836000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461200190919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015610a47573d6000803e3d6000fd5b507faa0e554f781c3c3b2be110a0557f260f11af9a8aa2c64bc1e7a31dbb21e32fa2338585604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a150505050565b60606002805480602002602001604051908101604052809291908181526020018280548015610b7157602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610b27575b5050505050905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401549050919050565b6060600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015610c8757602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610c3d575b50505050509050919050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600281815481101515610d2b57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000813373ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610df857600080fd5b826000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff16151515610e5457600080fd5b8360008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040154111515610ea557600080fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401544310151515610ef557600080fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549350610fca846000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003015461200190919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003018190555060008060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055503373ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f19350505050158015611120573d6000803e3d6000fd5b507f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb338686604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a15050505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301549050919050565b806000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff16151561126d57600080fd5b6112c1346000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003015461201a90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003018190555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561143157600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000203390806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b6114c2346000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461201a90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f66a9138482c99e9baf08860110ef332cc0c23b4a199a53593d8db0fc8f96fbfc338334604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a15050565b813373ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561168357600080fd5b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010190805190602001906116d8929190612038565b507f63f303264cd4b7a198f0163f96e0b6b1f972f9b73359a70c44241b862879d8a4338484604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156117a1578082015181840152602081019050611786565b50505050905090810190601f1680156117ce5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a1505050565b6000813373ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561188057600080fd5b826000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff1615156118db57600080fd5b60008060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160006101000a81548160ff021916908315150217905550600160035403600381905550600092505b600280549050831015611a0e578373ffffffffffffffffffffffffffffffffffffffff1660028481548110151561197957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611a01576002838154811015156119cf57fe5b9060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055611a0e565b8280600101935050611946565b611a756064611a67436000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004015461201a90919063ffffffff16565b61201a90919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055507f4edf3e325d0063213a39f9085522994a1c44bea5f39e7d63ef61260a1e58c6d33385604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a150505050565b606381565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff169050919050565b690a968163f0a57b40000081565b690a968163f0a57b4000003410151515611bdb57600080fd5b826000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff16151515611c3757600080fd5b60028490806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060a0604051908101604052803373ffffffffffffffffffffffffffffffffffffffff16815260200184848080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050815260200160011515815260200134815260200160008152506000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001019080519060200190611db29291906120b8565b5060408201518160020160006101000a81548160ff0219169083151502179055506060820151816003015560808201518160040155905050346000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600354016003819055507f7635f1d87b47fba9f2b09e56eb4be75cca030e0cb179c1602ac9261d39a8f5c1338534604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a150505050565b60606000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611ff55780601f10611fca57610100808354040283529160200191611ff5565b820191906000526020600020905b815481529060010190602001808311611fd857829003601f168201915b50505050509050919050565b600082821115151561200f57fe5b818303905092915050565b600080828401905083811015151561202e57fe5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061207957805160ff19168380011785556120a7565b828001600101855582156120a7579182015b828111156120a657825182559160200191906001019061208b565b5b5090506120b49190612138565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120f957805160ff1916838001178555612127565b82800160010185558215612127579182015b8281111561212657825182559160200191906001019061210b565b5b5090506121349190612138565b5090565b61215a91905b8082111561215657600081600090555060010161213e565b5090565b905600a165627a7a723058201712346c8b2cb36d3df286a126442509f385076691ee1a10ee645a918d5dc4fb0029"), - }, - common.StringToAddress("0x0000000000000000000000000000000000000089"): { - Balance: big.NewInt(0), - Code: []byte("0x60606040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632fb1b25f14610051578063dfceceae14610074575b600080fd5b341561005c57600080fd5b61007260048080359060200190919050506100ec565b005b341561007f57600080fd5b61009560048080359060200190919050506101ff565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156100d85780820151818401526020810190506100bd565b505050509050019250505060405180910390f35b8043101515156100fb57600080fd5b6101106107bc826102a590919063ffffffff16565b431115151561011e57600080fd5b600080828152602001908152602001600020805480600101828161014291906102c3565b9160005260206000209001600033909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550507f9a10b6124411386407c4a174729b856d293832181c352e98b5cb316b96cd30593382604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a150565b6102076102ef565b60008083815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561029957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161024f575b50505050509050919050565b60008082840190508381101515156102b957fe5b8091505092915050565b8154818355818115116102ea578183600052602060002091820191016102e99190610303565b5b505050565b602060405190810160405280600081525090565b61032591905b80821115610321576000816000905550600101610309565b5090565b905600a165627a7a72305820e4f5f28ef49e5e1400682161384764ac3a649da41197155ca70912ee01c79ed30029"), - }, - } + genesis := core.GenesisAlloc{acc1Addr: {Balance: big.NewInt(1000000000)}} backend := backends.NewSimulatedBackend(genesis) + backend.Commit() ctx := context.Background() transactOpts := bind.NewKeyedTransactor(acc1Key) - blockSignerAddr := common.StringToAddress(common.BlockSigners) - blockSigner, err := blocksigner.NewBlockSigner(transactOpts, blockSignerAddr, backend) + blockSignerAddr, blockSigner, err := blocksigner.DeployBlockSigner(transactOpts, backend) if err != nil { - t.Fatalf("Can't deploy block signer: %v", err) + t.Fatalf("Can't get block signer: %v", err) } backend.Commit() nonces := make(map[*ecdsa.PrivateKey]int) oldBlock := make([]common.Address, 100) - for i := uint64(0); i < 100; i++ { - rand := rand.Intn(len(keys)) - accKey := keys[rand] + signTx := func(ctx context.Context, backend *backends.SimulatedBackend, signer types.HomesteadSigner, nonces map[*ecdsa.PrivateKey]int, accKey *ecdsa.PrivateKey, i uint64) { tx, _ := types.SignTx(CreateTxSign(new(big.Int).SetUint64(i), uint64(nonces[accKey]), blockSignerAddr), signer, accKey) backend.SendTransaction(ctx, tx) backend.Commit() nonces[accKey]++ - oldBlock[i] = accounts[rand] + } + + // Tx sign for signer. + for i := uint64(0); i < 100; i++ { + randIndex := rand.Intn(len(keys)) + accKey := keys[randIndex] + signTx(ctx, backend, signer, nonces, accKey, i) + oldBlock[i] = accounts[randIndex] + + // Tx sign for validators. + for _, key := range keys { + if key != accKey { + signTx(ctx, backend, signer, nonces, key, i) + } + } } for i := uint64(0); i < 100; i++ { @@ -70,5 +72,9 @@ func TestSendTxSign(t *testing.T) { if signers[0].String() != oldBlock[i].String() { t.Errorf("Tx sign for block signer not match %v - %v", signers[0].String(), oldBlock[i].String()) } + + if len(signers) != len(keys) { + t.Error("Tx sign for block validators not match") + } } }