miner_args.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. package api
  2. import (
  3. "encoding/json"
  4. "math/big"
  5. "github.com/ethereum/go-ethereum/common"
  6. "github.com/ethereum/go-ethereum/rpc/shared"
  7. )
  8. type StartMinerArgs struct {
  9. Threads int
  10. }
  11. func (args *StartMinerArgs) UnmarshalJSON(b []byte) (err error) {
  12. var obj []interface{}
  13. if err := json.Unmarshal(b, &obj); err != nil {
  14. return shared.NewDecodeParamError(err.Error())
  15. }
  16. if len(obj) == 0 || obj[0] == nil {
  17. args.Threads = -1
  18. return nil
  19. }
  20. var num *big.Int
  21. if num, err = numString(obj[0]); err != nil {
  22. return err
  23. }
  24. args.Threads = int(num.Int64())
  25. return nil
  26. }
  27. type SetExtraArgs struct {
  28. Data string
  29. }
  30. func (args *SetExtraArgs) UnmarshalJSON(b []byte) (err error) {
  31. var obj []interface{}
  32. if err := json.Unmarshal(b, &obj); err != nil {
  33. return shared.NewDecodeParamError(err.Error())
  34. }
  35. if len(obj) < 1 {
  36. return shared.NewInsufficientParamsError(len(obj), 1)
  37. }
  38. extrastr, ok := obj[0].(string)
  39. if !ok {
  40. return shared.NewInvalidTypeError("Price", "not a string")
  41. }
  42. args.Data = extrastr
  43. return nil
  44. }
  45. type GasPriceArgs struct {
  46. Price string
  47. }
  48. func (args *GasPriceArgs) UnmarshalJSON(b []byte) (err error) {
  49. var obj []interface{}
  50. if err := json.Unmarshal(b, &obj); err != nil {
  51. return shared.NewDecodeParamError(err.Error())
  52. }
  53. if len(obj) < 1 {
  54. return shared.NewInsufficientParamsError(len(obj), 1)
  55. }
  56. if pricestr, ok := obj[0].(string); ok {
  57. args.Price = pricestr
  58. return nil
  59. }
  60. return shared.NewInvalidTypeError("Price", "not a string")
  61. }
  62. type SetEtherbaseArgs struct {
  63. Etherbase common.Address
  64. }
  65. func (args *SetEtherbaseArgs) UnmarshalJSON(b []byte) (err error) {
  66. var obj []interface{}
  67. if err := json.Unmarshal(b, &obj); err != nil {
  68. return shared.NewDecodeParamError(err.Error())
  69. }
  70. if len(obj) < 1 {
  71. return shared.NewInsufficientParamsError(len(obj), 1)
  72. }
  73. if addr, ok := obj[0].(string); ok {
  74. args.Etherbase = common.HexToAddress(addr)
  75. if (args.Etherbase == common.Address{}) {
  76. return shared.NewInvalidTypeError("Etherbase", "not a valid address")
  77. }
  78. return nil
  79. }
  80. return shared.NewInvalidTypeError("Etherbase", "not a string")
  81. }
  82. type MakeDAGArgs struct {
  83. BlockNumber int64
  84. }
  85. func (args *MakeDAGArgs) UnmarshalJSON(b []byte) (err error) {
  86. args.BlockNumber = -1
  87. var obj []interface{}
  88. if err := json.Unmarshal(b, &obj); err != nil {
  89. return shared.NewDecodeParamError(err.Error())
  90. }
  91. if len(obj) < 1 {
  92. return shared.NewInsufficientParamsError(len(obj), 1)
  93. }
  94. if err := blockHeight(obj[0], &args.BlockNumber); err != nil {
  95. return err
  96. }
  97. return nil
  98. }