mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-18 18:02:24 +00:00
added switch case if gen block alloc is found in db
This commit is contained in:
parent
d5d0e9fc4a
commit
af59e6aa54
2 changed files with 34 additions and 60 deletions
|
|
@ -139,66 +139,49 @@ func (e *GenesisMismatchError) Error() string {
|
||||||
return fmt.Sprintf("database already contains an incompatible genesis block (have %x, new %x)", e.Stored[:8], e.New[:8])
|
return fmt.Sprintf("database already contains an incompatible genesis block (have %x, new %x)", e.Stored[:8], e.New[:8])
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetupGenesisBlock writes or updates the genesis block in db.
|
//WriteShyftGen writes the genesis block to Shyft db
|
||||||
// The block that will be used is:
|
//@NOTE:SHYFT
|
||||||
//
|
|
||||||
// genesis == nil genesis != nil
|
|
||||||
// +------------------------------------------
|
|
||||||
// db has no genesis | main-net default | genesis
|
|
||||||
// db has genesis | from DB | genesis (if compatible)
|
|
||||||
//
|
|
||||||
// The stored chain configuration will be updated if it is compatible (i.e. does not
|
|
||||||
// specify a fork block below the local head block). In case of a conflict, the
|
|
||||||
// error is a *params.ConfigCompatError and the new, unwritten config is returned.
|
|
||||||
//
|
|
||||||
// The returned chain configuration is never nil.
|
|
||||||
//func SetupShyftGenesisBlock(sqldb *sql.DB,gen *Genesis) (common.Hash) {
|
|
||||||
// // Just commit the new block if there is no stored genesis block.
|
|
||||||
// //stored := GetCanonicalHash(db, 0)
|
|
||||||
// //if (stored == common.Hash{}) {
|
|
||||||
// // if genesis == nil {
|
|
||||||
// // log.Info("Writing default main-net genesis block")
|
|
||||||
// // genesis = DefaultGenesisBlock()
|
|
||||||
// // } else {
|
|
||||||
// // log.Info("Writing custom genesis block")
|
|
||||||
// // }
|
|
||||||
// //
|
|
||||||
// //shyftBlock := gen.ShyftCommit(sqldb)
|
|
||||||
// log.Info("Setup Shyft Gen")
|
|
||||||
// return shyftBlock.Hash()
|
|
||||||
//}
|
|
||||||
|
|
||||||
// SetupGenesisBlock writes or updates the genesis block in db.
|
|
||||||
// The block that will be used is:
|
|
||||||
//
|
|
||||||
// genesis == nil genesis != nil
|
|
||||||
// +------------------------------------------
|
|
||||||
// db has no genesis | main-net default | genesis
|
|
||||||
// db has genesis | from DB | genesis (if compatible)
|
|
||||||
//
|
|
||||||
// The stored chain configuration will be updated if it is compatible (i.e. does not
|
|
||||||
// specify a fork block below the local head block). In case of a conflict, the
|
|
||||||
// error is a *params.ConfigCompatError and the new, unwritten config is returned.
|
|
||||||
//
|
|
||||||
// The returned chain configuration is never nil.
|
|
||||||
func WriteShyftGen(sqldb *sql.DB, gen *Genesis) {
|
func WriteShyftGen(sqldb *sql.DB, gen *Genesis) {
|
||||||
|
|
||||||
if sqldb == nil {
|
if sqldb == nil {
|
||||||
fmt.Println("NIL POSTGRES")
|
log.Info("Initializing Shyft Postgres DB")
|
||||||
connStr := "user=postgres dbname=shyftdb sslmode=disable"
|
connStr := "user=postgres dbname=shyftdb sslmode=disable"
|
||||||
blockExplorerDb, _ := sql.Open("postgres", connStr)
|
blockExplorerDb, _ := sql.Open("postgres", connStr)
|
||||||
sqldb = blockExplorerDb
|
sqldb = blockExplorerDb
|
||||||
}
|
}
|
||||||
|
|
||||||
for k, v := range gen.Alloc {
|
for k := range gen.Alloc {
|
||||||
addr := k.String()
|
addr := k.String()
|
||||||
|
var response string
|
||||||
|
sqlExistsStatement := `SELECT balance from accounts WHERE addr = ($1)`
|
||||||
|
err := sqldb.QueryRow(sqlExistsStatement, addr).Scan(&response)
|
||||||
|
switch {
|
||||||
|
case err == sql.ErrNoRows:
|
||||||
|
for k, v := range gen.Alloc {
|
||||||
|
addr := k.String()
|
||||||
|
|
||||||
sqlStatement := `INSERT INTO accounts(addr, balance) VALUES(($1), ($2)) RETURNING addr`
|
sqlStatement := `INSERT INTO accounts(addr, balance) VALUES(($1), ($2)) RETURNING addr`
|
||||||
insertErr := sqldb.QueryRow(sqlStatement, addr, v.Balance.String()).Scan(&addr)
|
insertErr := sqldb.QueryRow(sqlStatement, addr, v.Balance.String()).Scan(&addr)
|
||||||
fmt.Println(insertErr)
|
if insertErr != nil {
|
||||||
}
|
panic(insertErr)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
log.Info("Found Genesis Block")
|
||||||
|
}}}
|
||||||
|
|
||||||
|
// SetupGenesisBlock writes or updates the genesis block in db.
|
||||||
|
// The block that will be used is:
|
||||||
|
//
|
||||||
|
// genesis == nil genesis != nil
|
||||||
|
// +------------------------------------------
|
||||||
|
// db has no genesis | main-net default | genesis
|
||||||
|
// db has genesis | from DB | genesis (if compatible)
|
||||||
|
//
|
||||||
|
// The stored chain configuration will be updated if it is compatible (i.e. does not
|
||||||
|
// specify a fork block below the local head block). In case of a conflict, the
|
||||||
|
// error is a *params.ConfigCompatError and the new, unwritten config is returned.
|
||||||
|
//
|
||||||
|
// The returned chain configuration is never nil.
|
||||||
func SetupGenesisBlock(db ethdb.Database, genesis *Genesis, sqldb *sql.DB) (*params.ChainConfig, common.Hash, error) {
|
func SetupGenesisBlock(db ethdb.Database, genesis *Genesis, sqldb *sql.DB) (*params.ChainConfig, common.Hash, error) {
|
||||||
if genesis != nil && genesis.Config == nil {
|
if genesis != nil && genesis.Config == nil {
|
||||||
return params.AllEthashProtocolChanges, common.Hash{}, errGenesisNoConfig
|
return params.AllEthashProtocolChanges, common.Hash{}, errGenesisNoConfig
|
||||||
|
|
@ -212,7 +195,7 @@ func SetupGenesisBlock(db ethdb.Database, genesis *Genesis, sqldb *sql.DB) (*par
|
||||||
genesis = DefaultGenesisBlock()
|
genesis = DefaultGenesisBlock()
|
||||||
} else {
|
} else {
|
||||||
log.Info("Writing custom genesis block")
|
log.Info("Writing custom genesis block")
|
||||||
|
//@NOTE:SHYFT WRITE TO DB
|
||||||
WriteShyftGen(sqldb, genesis)
|
WriteShyftGen(sqldb, genesis)
|
||||||
}
|
}
|
||||||
block, err := genesis.Commit(db)
|
block, err := genesis.Commit(db)
|
||||||
|
|
|
||||||
|
|
@ -83,14 +83,6 @@ type SendAndReceive struct {
|
||||||
Balance string
|
Balance string
|
||||||
}
|
}
|
||||||
|
|
||||||
//func WriteGen(sqldb *sql.DB, genesis *core.Genesis) error {
|
|
||||||
// for k, v := range genesis.Alloc {
|
|
||||||
// addr := k.String()
|
|
||||||
// fmt.Println(addr,v.Balance)
|
|
||||||
// fmt.Println("*************")
|
|
||||||
// }
|
|
||||||
// return nil
|
|
||||||
//}
|
|
||||||
//WriteBlock writes to block info to sql db
|
//WriteBlock writes to block info to sql db
|
||||||
func WriteBlock(sqldb *sql.DB, block *types.Block) error {
|
func WriteBlock(sqldb *sql.DB, block *types.Block) error {
|
||||||
coinbase := block.Header().Coinbase.String()
|
coinbase := block.Header().Coinbase.String()
|
||||||
|
|
@ -169,7 +161,6 @@ func WriteFromBalance(sqldb *sql.DB, tx *types.Transaction) error {
|
||||||
err := sqldb.QueryRow(sqlExistsStatement, toAddr).Scan(&response)
|
err := sqldb.QueryRow(sqlExistsStatement, toAddr).Scan(&response)
|
||||||
switch {
|
switch {
|
||||||
case err == sql.ErrNoRows:
|
case err == sql.ErrNoRows:
|
||||||
fmt.Println("No rows error :)")
|
|
||||||
|
|
||||||
sqlStatement := `INSERT INTO accounts(addr, balance) VALUES(($1), ($2)) RETURNING addr`
|
sqlStatement := `INSERT INTO accounts(addr, balance) VALUES(($1), ($2)) RETURNING addr`
|
||||||
insertErr := sqldb.QueryRow(sqlStatement, toAddr, amount).Scan(&toAddr)
|
insertErr := sqldb.QueryRow(sqlStatement, toAddr, amount).Scan(&toAddr)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue