mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-16 17:03:46 +00:00
Merge branch 'ethereum:master' into portal
This commit is contained in:
commit
9ff196c88b
11 changed files with 51 additions and 56 deletions
|
|
@ -24,7 +24,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ConvertType converts an interface of a runtime type into a interface of the
|
// ConvertType converts an interface of a runtime type into an interface of the
|
||||||
// given type, e.g. turn this code:
|
// given type, e.g. turn this code:
|
||||||
//
|
//
|
||||||
// var fields []reflect.StructField
|
// var fields []reflect.StructField
|
||||||
|
|
@ -33,7 +33,7 @@ import (
|
||||||
// Name: "X",
|
// Name: "X",
|
||||||
// Type: reflect.TypeOf(new(big.Int)),
|
// Type: reflect.TypeOf(new(big.Int)),
|
||||||
// Tag: reflect.StructTag("json:\"" + "x" + "\""),
|
// Tag: reflect.StructTag("json:\"" + "x" + "\""),
|
||||||
// }
|
// })
|
||||||
//
|
//
|
||||||
// into:
|
// into:
|
||||||
//
|
//
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,7 @@ type Requester interface {
|
||||||
// allow new operations.
|
// allow new operations.
|
||||||
type Scheduler struct {
|
type Scheduler struct {
|
||||||
lock sync.Mutex
|
lock sync.Mutex
|
||||||
modules []Module // first has highest priority
|
modules []Module // first has the highest priority
|
||||||
names map[Module]string
|
names map[Module]string
|
||||||
servers map[server]struct{}
|
servers map[server]struct{}
|
||||||
targets map[targetData]uint64
|
targets map[targetData]uint64
|
||||||
|
|
|
||||||
|
|
@ -545,7 +545,7 @@ var (
|
||||||
Category: flags.VMCategory,
|
Category: flags.VMCategory,
|
||||||
}
|
}
|
||||||
VMTraceConfigFlag = &cli.StringFlag{
|
VMTraceConfigFlag = &cli.StringFlag{
|
||||||
Name: "vmtrace.config",
|
Name: "vmtrace.jsonconfig",
|
||||||
Usage: "Tracer configuration (JSON)",
|
Usage: "Tracer configuration (JSON)",
|
||||||
Category: flags.VMCategory,
|
Category: flags.VMCategory,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,21 +19,21 @@ var _ = (*genesisSpecMarshaling)(nil)
|
||||||
// MarshalJSON marshals as JSON.
|
// MarshalJSON marshals as JSON.
|
||||||
func (g Genesis) MarshalJSON() ([]byte, error) {
|
func (g Genesis) MarshalJSON() ([]byte, error) {
|
||||||
type Genesis struct {
|
type Genesis struct {
|
||||||
Config *params.ChainConfig `json:"config"`
|
Config *params.ChainConfig `json:"config"`
|
||||||
Nonce math.HexOrDecimal64 `json:"nonce"`
|
Nonce math.HexOrDecimal64 `json:"nonce"`
|
||||||
Timestamp math.HexOrDecimal64 `json:"timestamp"`
|
Timestamp math.HexOrDecimal64 `json:"timestamp"`
|
||||||
ExtraData hexutil.Bytes `json:"extraData"`
|
ExtraData hexutil.Bytes `json:"extraData"`
|
||||||
GasLimit math.HexOrDecimal64 `json:"gasLimit" gencodec:"required"`
|
GasLimit math.HexOrDecimal64 `json:"gasLimit" gencodec:"required"`
|
||||||
Difficulty *math.HexOrDecimal256 `json:"difficulty" gencodec:"required"`
|
Difficulty *math.HexOrDecimal256 `json:"difficulty" gencodec:"required"`
|
||||||
Mixhash common.Hash `json:"mixHash"`
|
Mixhash common.Hash `json:"mixHash"`
|
||||||
Coinbase common.Address `json:"coinbase"`
|
Coinbase common.Address `json:"coinbase"`
|
||||||
Alloc map[common.UnprefixedAddress]types.Account `json:"alloc" gencodec:"required"`
|
Alloc map[common.UnprefixedAddress]types.Account `json:"alloc" gencodec:"required"`
|
||||||
Number math.HexOrDecimal64 `json:"number"`
|
Number math.HexOrDecimal64 `json:"number"`
|
||||||
GasUsed math.HexOrDecimal64 `json:"gasUsed"`
|
GasUsed math.HexOrDecimal64 `json:"gasUsed"`
|
||||||
ParentHash common.Hash `json:"parentHash"`
|
ParentHash common.Hash `json:"parentHash"`
|
||||||
BaseFee *math.HexOrDecimal256 `json:"baseFeePerGas"`
|
BaseFee *math.HexOrDecimal256 `json:"baseFeePerGas"`
|
||||||
ExcessBlobGas *math.HexOrDecimal64 `json:"excessBlobGas"`
|
ExcessBlobGas *math.HexOrDecimal64 `json:"excessBlobGas"`
|
||||||
BlobGasUsed *math.HexOrDecimal64 `json:"blobGasUsed"`
|
BlobGasUsed *math.HexOrDecimal64 `json:"blobGasUsed"`
|
||||||
}
|
}
|
||||||
var enc Genesis
|
var enc Genesis
|
||||||
enc.Config = g.Config
|
enc.Config = g.Config
|
||||||
|
|
@ -62,21 +62,21 @@ func (g Genesis) MarshalJSON() ([]byte, error) {
|
||||||
// UnmarshalJSON unmarshals from JSON.
|
// UnmarshalJSON unmarshals from JSON.
|
||||||
func (g *Genesis) UnmarshalJSON(input []byte) error {
|
func (g *Genesis) UnmarshalJSON(input []byte) error {
|
||||||
type Genesis struct {
|
type Genesis struct {
|
||||||
Config *params.ChainConfig `json:"config"`
|
Config *params.ChainConfig `json:"config"`
|
||||||
Nonce *math.HexOrDecimal64 `json:"nonce"`
|
Nonce *math.HexOrDecimal64 `json:"nonce"`
|
||||||
Timestamp *math.HexOrDecimal64 `json:"timestamp"`
|
Timestamp *math.HexOrDecimal64 `json:"timestamp"`
|
||||||
ExtraData *hexutil.Bytes `json:"extraData"`
|
ExtraData *hexutil.Bytes `json:"extraData"`
|
||||||
GasLimit *math.HexOrDecimal64 `json:"gasLimit" gencodec:"required"`
|
GasLimit *math.HexOrDecimal64 `json:"gasLimit" gencodec:"required"`
|
||||||
Difficulty *math.HexOrDecimal256 `json:"difficulty" gencodec:"required"`
|
Difficulty *math.HexOrDecimal256 `json:"difficulty" gencodec:"required"`
|
||||||
Mixhash *common.Hash `json:"mixHash"`
|
Mixhash *common.Hash `json:"mixHash"`
|
||||||
Coinbase *common.Address `json:"coinbase"`
|
Coinbase *common.Address `json:"coinbase"`
|
||||||
Alloc map[common.UnprefixedAddress]types.Account `json:"alloc" gencodec:"required"`
|
Alloc map[common.UnprefixedAddress]types.Account `json:"alloc" gencodec:"required"`
|
||||||
Number *math.HexOrDecimal64 `json:"number"`
|
Number *math.HexOrDecimal64 `json:"number"`
|
||||||
GasUsed *math.HexOrDecimal64 `json:"gasUsed"`
|
GasUsed *math.HexOrDecimal64 `json:"gasUsed"`
|
||||||
ParentHash *common.Hash `json:"parentHash"`
|
ParentHash *common.Hash `json:"parentHash"`
|
||||||
BaseFee *math.HexOrDecimal256 `json:"baseFeePerGas"`
|
BaseFee *math.HexOrDecimal256 `json:"baseFeePerGas"`
|
||||||
ExcessBlobGas *math.HexOrDecimal64 `json:"excessBlobGas"`
|
ExcessBlobGas *math.HexOrDecimal64 `json:"excessBlobGas"`
|
||||||
BlobGasUsed *math.HexOrDecimal64 `json:"blobGasUsed"`
|
BlobGasUsed *math.HexOrDecimal64 `json:"blobGasUsed"`
|
||||||
}
|
}
|
||||||
var dec Genesis
|
var dec Genesis
|
||||||
if err := json.Unmarshal(input, &dec); err != nil {
|
if err := json.Unmarshal(input, &dec); err != nil {
|
||||||
|
|
|
||||||
|
|
@ -92,20 +92,20 @@ func DeleteAccountSnapshot(db ethdb.KeyValueWriter, hash common.Hash) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ReadStorageSnapshot retrieves the snapshot entry of an storage trie leaf.
|
// ReadStorageSnapshot retrieves the snapshot entry of a storage trie leaf.
|
||||||
func ReadStorageSnapshot(db ethdb.KeyValueReader, accountHash, storageHash common.Hash) []byte {
|
func ReadStorageSnapshot(db ethdb.KeyValueReader, accountHash, storageHash common.Hash) []byte {
|
||||||
data, _ := db.Get(storageSnapshotKey(accountHash, storageHash))
|
data, _ := db.Get(storageSnapshotKey(accountHash, storageHash))
|
||||||
return data
|
return data
|
||||||
}
|
}
|
||||||
|
|
||||||
// WriteStorageSnapshot stores the snapshot entry of an storage trie leaf.
|
// WriteStorageSnapshot stores the snapshot entry of a storage trie leaf.
|
||||||
func WriteStorageSnapshot(db ethdb.KeyValueWriter, accountHash, storageHash common.Hash, entry []byte) {
|
func WriteStorageSnapshot(db ethdb.KeyValueWriter, accountHash, storageHash common.Hash, entry []byte) {
|
||||||
if err := db.Put(storageSnapshotKey(accountHash, storageHash), entry); err != nil {
|
if err := db.Put(storageSnapshotKey(accountHash, storageHash), entry); err != nil {
|
||||||
log.Crit("Failed to store storage snapshot", "err", err)
|
log.Crit("Failed to store storage snapshot", "err", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeleteStorageSnapshot removes the snapshot entry of an storage trie leaf.
|
// DeleteStorageSnapshot removes the snapshot entry of a storage trie leaf.
|
||||||
func DeleteStorageSnapshot(db ethdb.KeyValueWriter, accountHash, storageHash common.Hash) {
|
func DeleteStorageSnapshot(db ethdb.KeyValueWriter, accountHash, storageHash common.Hash) {
|
||||||
if err := db.Delete(storageSnapshotKey(accountHash, storageHash)); err != nil {
|
if err := db.Delete(storageSnapshotKey(accountHash, storageHash)); err != nil {
|
||||||
log.Crit("Failed to delete storage snapshot", "err", err)
|
log.Crit("Failed to delete storage snapshot", "err", err)
|
||||||
|
|
|
||||||
|
|
@ -889,22 +889,17 @@ func opPush1(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([]by
|
||||||
// make push instruction function
|
// make push instruction function
|
||||||
func makePush(size uint64, pushByteSize int) executionFunc {
|
func makePush(size uint64, pushByteSize int) executionFunc {
|
||||||
return func(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([]byte, error) {
|
return func(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([]byte, error) {
|
||||||
codeLen := len(scope.Contract.Code)
|
var (
|
||||||
|
codeLen = len(scope.Contract.Code)
|
||||||
startMin := codeLen
|
start = min(codeLen, int(*pc+1))
|
||||||
if int(*pc+1) < startMin {
|
end = min(codeLen, start+pushByteSize)
|
||||||
startMin = int(*pc + 1)
|
)
|
||||||
}
|
scope.Stack.push(new(uint256.Int).SetBytes(
|
||||||
|
common.RightPadBytes(
|
||||||
endMin := codeLen
|
scope.Contract.Code[start:end],
|
||||||
if startMin+pushByteSize < endMin {
|
pushByteSize,
|
||||||
endMin = startMin + pushByteSize
|
)),
|
||||||
}
|
)
|
||||||
|
|
||||||
integer := new(uint256.Int)
|
|
||||||
scope.Stack.push(integer.SetBytes(common.RightPadBytes(
|
|
||||||
scope.Contract.Code[startMin:endMin], pushByteSize)))
|
|
||||||
|
|
||||||
*pc += size
|
*pc += size
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@ func randSig() []byte {
|
||||||
}
|
}
|
||||||
|
|
||||||
// tests for malleability
|
// tests for malleability
|
||||||
// highest bit of signature ECDSA s value must be 0, in the 33th byte
|
// the highest bit of signature ECDSA s value must be 0, in the 33th byte
|
||||||
func compactSigCheck(t *testing.T, sig []byte) {
|
func compactSigCheck(t *testing.T, sig []byte) {
|
||||||
var b = int(sig[32])
|
var b = int(sig[32])
|
||||||
if b < 0 {
|
if b < 0 {
|
||||||
|
|
|
||||||
2
go.mod
2
go.mod
|
|
@ -48,6 +48,7 @@ require (
|
||||||
github.com/jedisct1/go-minisign v0.0.0-20230811132847-661be99b8267
|
github.com/jedisct1/go-minisign v0.0.0-20230811132847-661be99b8267
|
||||||
github.com/julienschmidt/httprouter v1.3.0
|
github.com/julienschmidt/httprouter v1.3.0
|
||||||
github.com/karalabe/hid v1.0.1-0.20240306101548-573246063e52
|
github.com/karalabe/hid v1.0.1-0.20240306101548-573246063e52
|
||||||
|
github.com/kilic/bls12-381 v0.1.0
|
||||||
github.com/kylelemons/godebug v1.1.0
|
github.com/kylelemons/godebug v1.1.0
|
||||||
github.com/mattn/go-colorable v0.1.13
|
github.com/mattn/go-colorable v0.1.13
|
||||||
github.com/mattn/go-isatty v0.0.17
|
github.com/mattn/go-isatty v0.0.17
|
||||||
|
|
@ -120,7 +121,6 @@ require (
|
||||||
github.com/hashicorp/go-retryablehttp v0.7.4 // indirect
|
github.com/hashicorp/go-retryablehttp v0.7.4 // indirect
|
||||||
github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839 // indirect
|
github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839 // indirect
|
||||||
github.com/jmespath/go-jmespath v0.4.0 // indirect
|
github.com/jmespath/go-jmespath v0.4.0 // indirect
|
||||||
github.com/kilic/bls12-381 v0.1.0 // indirect
|
|
||||||
github.com/klauspost/compress v1.15.15 // indirect
|
github.com/klauspost/compress v1.15.15 // indirect
|
||||||
github.com/klauspost/cpuid/v2 v2.0.9 // indirect
|
github.com/klauspost/cpuid/v2 v2.0.9 // indirect
|
||||||
github.com/kr/pretty v0.3.1 // indirect
|
github.com/kr/pretty v0.3.1 // indirect
|
||||||
|
|
|
||||||
|
|
@ -153,7 +153,7 @@ func SamplePercentile(values []int64, p float64) float64 {
|
||||||
}
|
}
|
||||||
|
|
||||||
// CalculatePercentiles returns a slice of arbitrary percentiles of the slice of
|
// CalculatePercentiles returns a slice of arbitrary percentiles of the slice of
|
||||||
// int64. This method returns interpolated results, so e.g if there are only two
|
// int64. This method returns interpolated results, so e.g. if there are only two
|
||||||
// values, [0, 10], a 50% percentile will land between them.
|
// values, [0, 10], a 50% percentile will land between them.
|
||||||
//
|
//
|
||||||
// Note: As a side-effect, this method will also sort the slice of values.
|
// Note: As a side-effect, this method will also sort the slice of values.
|
||||||
|
|
|
||||||
|
|
@ -88,7 +88,7 @@ func (s *Server) SetHTTPBodyLimit(limit int) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// RegisterName creates a service for the given receiver type under the given name. When no
|
// RegisterName creates a service for the given receiver type under the given name. When no
|
||||||
// methods on the given receiver match the criteria to be either a RPC method or a
|
// methods on the given receiver match the criteria to be either an RPC method or a
|
||||||
// subscription an error is returned. Otherwise a new service is created and added to the
|
// subscription an error is returned. Otherwise a new service is created and added to the
|
||||||
// service collection this server provides to clients.
|
// service collection this server provides to clients.
|
||||||
func (s *Server) RegisterName(name string, receiver interface{}) error {
|
func (s *Server) RegisterName(name string, receiver interface{}) error {
|
||||||
|
|
|
||||||
|
|
@ -110,7 +110,7 @@ func (r *serviceRegistry) subscription(service, name string) *callback {
|
||||||
}
|
}
|
||||||
|
|
||||||
// suitableCallbacks iterates over the methods of the given type. It determines if a method
|
// suitableCallbacks iterates over the methods of the given type. It determines if a method
|
||||||
// satisfies the criteria for a RPC callback or a subscription callback and adds it to the
|
// satisfies the criteria for an RPC callback or a subscription callback and adds it to the
|
||||||
// collection of callbacks. See server documentation for a summary of these criteria.
|
// collection of callbacks. See server documentation for a summary of these criteria.
|
||||||
func suitableCallbacks(receiver reflect.Value) map[string]*callback {
|
func suitableCallbacks(receiver reflect.Value) map[string]*callback {
|
||||||
typ := receiver.Type()
|
typ := receiver.Type()
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue