parent
b443ed0463
commit
385075d6a1
@ -1,35 +0,0 @@ |
||||
package node |
||||
|
||||
import ( |
||||
"crypto/ecdsa" |
||||
"math/big" |
||||
"math/rand" |
||||
"strings" |
||||
|
||||
"github.com/ethereum/go-ethereum/crypto" |
||||
"github.com/ethereum/go-ethereum/params" |
||||
"github.com/harmony-one/harmony/core" |
||||
) |
||||
|
||||
// CreateGenesisAllocWithTestingAddresses create the genesis block allocation that contains deterministically
|
||||
// generated testing addressess with tokens.
|
||||
// TODO: Remove it later when moving to production.
|
||||
func (node *Node) CreateGenesisAllocWithTestingAddresses(numAddress int) core.GenesisAlloc { |
||||
rand.Seed(0) |
||||
len := 1000000 |
||||
bytes := make([]byte, len) |
||||
for i := 0; i < len; i++ { |
||||
bytes[i] = byte(rand.Intn(100)) |
||||
} |
||||
reader := strings.NewReader(string(bytes)) |
||||
genesisAloc := make(core.GenesisAlloc) |
||||
for i := 0; i < numAddress; i++ { |
||||
testBankKey, _ := ecdsa.GenerateKey(crypto.S256(), reader) |
||||
testBankAddress := crypto.PubkeyToAddress(testBankKey.PublicKey) |
||||
testBankFunds := big.NewInt(1000) |
||||
testBankFunds = testBankFunds.Mul(testBankFunds, big.NewInt(params.Ether)) |
||||
genesisAloc[testBankAddress] = core.GenesisAccount{Balance: testBankFunds} |
||||
node.TestBankKeys = append(node.TestBankKeys, testBankKey) |
||||
} |
||||
return genesisAloc |
||||
} |
@ -0,0 +1,73 @@ |
||||
package node |
||||
|
||||
import ( |
||||
"crypto/ecdsa" |
||||
"math/big" |
||||
"math/rand" |
||||
"strings" |
||||
|
||||
"github.com/ethereum/go-ethereum/crypto" |
||||
"github.com/ethereum/go-ethereum/ethdb" |
||||
"github.com/ethereum/go-ethereum/params" |
||||
"github.com/harmony-one/harmony/core" |
||||
"github.com/harmony-one/harmony/core/vm" |
||||
) |
||||
|
||||
const ( |
||||
// Number of fake address.
|
||||
FakeAddressNumber = 100 |
||||
// TotalInitFund is the initial total fund to the faucet.
|
||||
TotalInitFund = 9000000 |
||||
) |
||||
|
||||
func (node *Node) GenesisSetup(db ethdb.Database) (*core.BlockChain, error) { |
||||
// Initialize genesis block and blockchain
|
||||
genesisAlloc := node.CreateGenesisAllocWithTestingAddresses(100) |
||||
contractKey, _ := ecdsa.GenerateKey(crypto.S256(), strings.NewReader("Test contract key string stream that is fixed so that generated test key are deterministic every time")) |
||||
contractAddress := crypto.PubkeyToAddress(contractKey.PublicKey) |
||||
contractFunds := big.NewInt(TotalInitFund) |
||||
contractFunds = contractFunds.Mul(contractFunds, big.NewInt(params.Ether)) |
||||
genesisAlloc[contractAddress] = core.GenesisAccount{Balance: contractFunds} |
||||
node.ContractKeys = append(node.ContractKeys, contractKey) |
||||
|
||||
node.AddFaucetContractToPendingTransactions() |
||||
if node.Role == BeaconLeader { |
||||
node.AddStakingContractToPendingTransactions() //This will save the latest information about staked nodes in current staked
|
||||
node.DepositToFakeAccounts() |
||||
} |
||||
|
||||
chainConfig := params.TestChainConfig |
||||
chainConfig.ChainID = big.NewInt(int64(node.Consensus.ShardID)) // Use ChainID as piggybacked ShardID
|
||||
gspec := core.Genesis{ |
||||
Config: chainConfig, |
||||
Alloc: genesisAlloc, |
||||
ShardID: uint32(node.Consensus.ShardID), |
||||
} |
||||
|
||||
// Store genesis block into db.
|
||||
gspec.MustCommit(db) |
||||
return core.NewBlockChain(db, nil, gspec.Config, node.Consensus, vm.Config{}, nil) |
||||
} |
||||
|
||||
// CreateGenesisAllocWithTestingAddresses create the genesis block allocation that contains deterministically
|
||||
// generated testing addressess with tokens.
|
||||
// TODO: Remove it later when moving to production.
|
||||
func (node *Node) CreateGenesisAllocWithTestingAddresses(numAddress int) core.GenesisAlloc { |
||||
rand.Seed(0) |
||||
len := 1000000 |
||||
bytes := make([]byte, len) |
||||
for i := 0; i < len; i++ { |
||||
bytes[i] = byte(rand.Intn(100)) |
||||
} |
||||
reader := strings.NewReader(string(bytes)) |
||||
genesisAloc := make(core.GenesisAlloc) |
||||
for i := 0; i < numAddress; i++ { |
||||
testBankKey, _ := ecdsa.GenerateKey(crypto.S256(), reader) |
||||
testBankAddress := crypto.PubkeyToAddress(testBankKey.PublicKey) |
||||
testBankFunds := big.NewInt(1000) |
||||
testBankFunds = testBankFunds.Mul(testBankFunds, big.NewInt(params.Ether)) |
||||
genesisAloc[testBankAddress] = core.GenesisAccount{Balance: testBankFunds} |
||||
node.TestBankKeys = append(node.TestBankKeys, testBankKey) |
||||
} |
||||
return genesisAloc |
||||
} |
Loading…
Reference in new issue