upgrade.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package systemcontracts
  2. import (
  3. "math/big"
  4. "github.com/ethereum/go-ethereum/common"
  5. "github.com/ethereum/go-ethereum/core/state"
  6. "github.com/ethereum/go-ethereum/params"
  7. )
  8. type UpgradeConfig struct {
  9. BeforeUpgrade upgradeHook
  10. AfterUpgrade upgradeHook
  11. ContractAddr common.Address
  12. CommitUrl string
  13. Code string
  14. }
  15. type Upgrade struct {
  16. UpgradeName string
  17. Configs []*UpgradeConfig
  18. }
  19. type upgradeHook func(blockNumber *big.Int, contractAddr common.Address, statedb *state.StateDB) error
  20. const ()
  21. var (
  22. GenesisHash common.Hash
  23. )
  24. func init() {
  25. }
  26. func UpgradeBuildInSystemContract(config *params.ChainConfig, blockNumber *big.Int, statedb *state.StateDB) {
  27. /*
  28. apply system upgrades
  29. */
  30. }
  31. // func applySystemContractUpgrade(upgrade *Upgrade, blockNumber *big.Int, statedb *state.StateDB, logger log.Logger) {
  32. // if upgrade == nil {
  33. // logger.Info("Empty upgrade config", "height", blockNumber.String())
  34. // return
  35. // }
  36. // logger.Info(fmt.Sprintf("Apply upgrade %s at height %d", upgrade.UpgradeName, blockNumber.Int64()))
  37. // for _, cfg := range upgrade.Configs {
  38. // logger.Info(fmt.Sprintf("Upgrade contract %s to commit %s", cfg.ContractAddr.String(), cfg.CommitUrl))
  39. // if cfg.BeforeUpgrade != nil {
  40. // err := cfg.BeforeUpgrade(blockNumber, cfg.ContractAddr, statedb)
  41. // if err != nil {
  42. // panic(fmt.Errorf("contract address: %s, execute beforeUpgrade error: %s", cfg.ContractAddr.String(), err.Error()))
  43. // }
  44. // }
  45. // newContractCode, err := hex.DecodeString(cfg.Code)
  46. // if err != nil {
  47. // panic(fmt.Errorf("failed to decode new contract code: %s", err.Error()))
  48. // }
  49. // statedb.SetCode(cfg.ContractAddr, newContractCode)
  50. // if cfg.AfterUpgrade != nil {
  51. // err := cfg.AfterUpgrade(blockNumber, cfg.ContractAddr, statedb)
  52. // if err != nil {
  53. // panic(fmt.Errorf("contract address: %s, execute afterUpgrade error: %s", cfg.ContractAddr.String(), err.Error()))
  54. // }
  55. // }
  56. // }
  57. // }