func testEth(t *testing.T) (ethereum *eth.Ethereum, err error) { os.RemoveAll("/tmp/eth-natspec/") err = os.MkdirAll("/tmp/eth-natspec/keystore", os.ModePerm) if err != nil { panic(err) } // create a testAddress ks := crypto.NewKeyStorePassphrase("/tmp/eth-natspec/keystore") am := accounts.NewManager(ks) testAccount, err := am.NewAccount("password") if err != nil { panic(err) } testAddress := strings.TrimPrefix(testAccount.Address.Hex(), "0x") db, _ := ethdb.NewMemDatabase() // set up mock genesis with balance on the testAddress core.WriteGenesisBlockForTesting(db, common.HexToAddress(testAddress), common.String2Big(testBalance)) // only use minimalistic stack with no networking ethereum, err = eth.New(ð.Config{ DataDir: "/tmp/eth-natspec", AccountManager: am, MaxPeers: 0, PowTest: true, Etherbase: common.HexToAddress(testAddress), NewDB: func(path string) (common.Database, error) { return db, nil }, }) if err != nil { panic(err) } return }
vectors []Vector by func(v Vector) *big.Int } type VectorSum func(v Vector) *big.Int func (v VectorSum) Sum(vectors []Vector) *big.Int { vs := vectorSummer{ vectors: vectors, by: v, } return Sum(vs) } func (v vectorSummer) Len() int { return len(v.vectors) } func (v vectorSummer) Sum(i int) *big.Int { return v.by(v.vectors[i]) } func GasSum(v Vector) *big.Int { return v.Gas } var etherInWei = new(big.Rat).SetInt(common.String2Big("1000000000000000000")) func GasPrice(bp, gl, ep *big.Int) *big.Int { BP := new(big.Rat).SetInt(bp) GL := new(big.Rat).SetInt(gl) EP := new(big.Rat).SetInt(ep) GP := new(big.Rat).Quo(BP, GL) GP = GP.Quo(GP, EP) return GP.Mul(GP, etherInWei).Num() }