mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-18 10:50:44 +00:00
commit
35e70fb43c
9 changed files with 45 additions and 0 deletions
|
|
@ -256,6 +256,23 @@ func opMcopy(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([]by
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// opBlobBaseFee implements BLOBBASEFEE opcode
|
||||||
|
func opBlobBaseFee(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([]byte, error) {
|
||||||
|
blobBaseFee := new(uint256.Int)
|
||||||
|
scope.Stack.push(blobBaseFee)
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// enable7516 applies EIP-7516 (BLOBBASEFEE opcode)
|
||||||
|
func enable7516(jt *JumpTable) {
|
||||||
|
jt[BLOBBASEFEE] = &operation{
|
||||||
|
execute: opBlobBaseFee,
|
||||||
|
constantGas: GasQuickStep,
|
||||||
|
minStack: minStack(0, 1),
|
||||||
|
maxStack: maxStack(0, 1),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// enable6780 applies EIP-6780 (deactivate SELFDESTRUCT)
|
// enable6780 applies EIP-6780 (deactivate SELFDESTRUCT)
|
||||||
func enable6780(jt *JumpTable) {
|
func enable6780(jt *JumpTable) {
|
||||||
jt[SELFDESTRUCT] = &operation{
|
jt[SELFDESTRUCT] = &operation{
|
||||||
|
|
|
||||||
|
|
@ -82,6 +82,7 @@ func validate(jt JumpTable) JumpTable {
|
||||||
|
|
||||||
func newCancunInstructionSet() JumpTable {
|
func newCancunInstructionSet() JumpTable {
|
||||||
instructionSet := newEip1559InstructionSet()
|
instructionSet := newEip1559InstructionSet()
|
||||||
|
enable7516(&instructionSet) // EIP-7516 (BLOBBASEFEE opcode)
|
||||||
enable1153(&instructionSet) // EIP-1153 "Transient Storage"
|
enable1153(&instructionSet) // EIP-1153 "Transient Storage"
|
||||||
enable5656(&instructionSet) // EIP-5656 (MCOPY opcode)
|
enable5656(&instructionSet) // EIP-5656 (MCOPY opcode)
|
||||||
enable6780(&instructionSet) // EIP-6780 SELFDESTRUCT only in same transaction
|
enable6780(&instructionSet) // EIP-6780 SELFDESTRUCT only in same transaction
|
||||||
|
|
|
||||||
|
|
@ -100,6 +100,7 @@ const (
|
||||||
CHAINID OpCode = 0x46
|
CHAINID OpCode = 0x46
|
||||||
SELFBALANCE OpCode = 0x47
|
SELFBALANCE OpCode = 0x47
|
||||||
BASEFEE OpCode = 0x48
|
BASEFEE OpCode = 0x48
|
||||||
|
BLOBBASEFEE OpCode = 0x4a
|
||||||
)
|
)
|
||||||
|
|
||||||
// 0x50 range - 'storage' and execution.
|
// 0x50 range - 'storage' and execution.
|
||||||
|
|
@ -284,6 +285,7 @@ var opCodeToString = [256]string{
|
||||||
CHAINID: "CHAINID",
|
CHAINID: "CHAINID",
|
||||||
SELFBALANCE: "SELFBALANCE",
|
SELFBALANCE: "SELFBALANCE",
|
||||||
BASEFEE: "BASEFEE",
|
BASEFEE: "BASEFEE",
|
||||||
|
BLOBBASEFEE: "BLOBBASEFEE",
|
||||||
|
|
||||||
// 0x50 range - 'storage' and execution.
|
// 0x50 range - 'storage' and execution.
|
||||||
POP: "POP",
|
POP: "POP",
|
||||||
|
|
@ -458,6 +460,7 @@ var stringToOp = map[string]OpCode{
|
||||||
"GASLIMIT": GASLIMIT,
|
"GASLIMIT": GASLIMIT,
|
||||||
"SELFBALANCE": SELFBALANCE,
|
"SELFBALANCE": SELFBALANCE,
|
||||||
"BASEFEE": BASEFEE,
|
"BASEFEE": BASEFEE,
|
||||||
|
"BLOBBASEFEE": BLOBBASEFEE,
|
||||||
"POP": POP,
|
"POP": POP,
|
||||||
"MLOAD": MLOAD,
|
"MLOAD": MLOAD,
|
||||||
"MSTORE": MSTORE,
|
"MSTORE": MSTORE,
|
||||||
|
|
|
||||||
|
|
@ -353,6 +353,10 @@ func (b *EthApiBackend) FeeHistory(ctx context.Context, blockCount uint64, lastB
|
||||||
return b.gpo.FeeHistory(ctx, blockCount, lastBlock, rewardPercentiles)
|
return b.gpo.FeeHistory(ctx, blockCount, lastBlock, rewardPercentiles)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (b *EthApiBackend) BlobBaseFee(ctx context.Context) *big.Int {
|
||||||
|
return new(big.Int)
|
||||||
|
}
|
||||||
|
|
||||||
func (b *EthApiBackend) ChainDb() ethdb.Database {
|
func (b *EthApiBackend) ChainDb() ethdb.Database {
|
||||||
return b.eth.ChainDb()
|
return b.eth.ChainDb()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -138,6 +138,11 @@ func (s *PublicEthereumAPI) FeeHistory(ctx context.Context, blockCount hexutil.U
|
||||||
return results, nil
|
return results, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// BlobBaseFee returns the base fee for blob gas at the current head.
|
||||||
|
func (s *PublicEthereumAPI) BlobBaseFee(ctx context.Context) *hexutil.Big {
|
||||||
|
return (*hexutil.Big)(new(big.Int))
|
||||||
|
}
|
||||||
|
|
||||||
// ProtocolVersion returns the current Ethereum protocol version this node supports
|
// ProtocolVersion returns the current Ethereum protocol version this node supports
|
||||||
func (s *PublicEthereumAPI) ProtocolVersion() hexutil.Uint {
|
func (s *PublicEthereumAPI) ProtocolVersion() hexutil.Uint {
|
||||||
return hexutil.Uint(s.b.ProtocolVersion())
|
return hexutil.Uint(s.b.ProtocolVersion())
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,7 @@ type Backend interface {
|
||||||
ProtocolVersion() int
|
ProtocolVersion() int
|
||||||
SuggestGasTipCap(ctx context.Context) (*big.Int, error)
|
SuggestGasTipCap(ctx context.Context) (*big.Int, error)
|
||||||
FeeHistory(ctx context.Context, blockCount uint64, lastBlock rpc.BlockNumber, rewardPercentiles []float64) (*big.Int, [][]*big.Int, []*big.Int, []float64, error)
|
FeeHistory(ctx context.Context, blockCount uint64, lastBlock rpc.BlockNumber, rewardPercentiles []float64) (*big.Int, [][]*big.Int, []*big.Int, []float64, error)
|
||||||
|
BlobBaseFee(ctx context.Context) *big.Int
|
||||||
ChainDb() ethdb.Database
|
ChainDb() ethdb.Database
|
||||||
AccountManager() *accounts.Manager
|
AccountManager() *accounts.Manager
|
||||||
RPCGasCap() uint64 // global gas cap for eth_call over rpc: DoS protection
|
RPCGasCap() uint64 // global gas cap for eth_call over rpc: DoS protection
|
||||||
|
|
|
||||||
|
|
@ -291,6 +291,11 @@ func (b *backendMock) SyncProgress() ethereum.SyncProgress { return ethereum.Syn
|
||||||
func (b *backendMock) FeeHistory(context.Context, uint64, rpc.BlockNumber, []float64) (*big.Int, [][]*big.Int, []*big.Int, []float64, error) {
|
func (b *backendMock) FeeHistory(context.Context, uint64, rpc.BlockNumber, []float64) (*big.Int, [][]*big.Int, []*big.Int, []float64, error) {
|
||||||
return nil, nil, nil, nil, nil
|
return nil, nil, nil, nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (b *backendMock) BlobBaseFee(ctx context.Context) *big.Int {
|
||||||
|
return new(big.Int)
|
||||||
|
}
|
||||||
|
|
||||||
func (b *backendMock) ChainDb() ethdb.Database { return nil }
|
func (b *backendMock) ChainDb() ethdb.Database { return nil }
|
||||||
func (b *backendMock) AccountManager() *accounts.Manager { return nil }
|
func (b *backendMock) AccountManager() *accounts.Manager { return nil }
|
||||||
func (b *backendMock) ExtRPCEnabled() bool { return false }
|
func (b *backendMock) ExtRPCEnabled() bool { return false }
|
||||||
|
|
|
||||||
|
|
@ -5586,6 +5586,11 @@ var properties = function () {
|
||||||
getter: 'eth_gasPrice',
|
getter: 'eth_gasPrice',
|
||||||
outputFormatter: formatters.outputBigNumberFormatter
|
outputFormatter: formatters.outputBigNumberFormatter
|
||||||
}),
|
}),
|
||||||
|
new Property({
|
||||||
|
name: 'blobBaseFee',
|
||||||
|
getter: 'eth_blobBaseFee',
|
||||||
|
outputFormatter: formatters.outputBigNumberFormatter
|
||||||
|
}),
|
||||||
new Property({
|
new Property({
|
||||||
name: 'accounts',
|
name: 'accounts',
|
||||||
getter: 'eth_accounts'
|
getter: 'eth_accounts'
|
||||||
|
|
|
||||||
|
|
@ -286,6 +286,10 @@ func (b *LesApiBackend) FeeHistory(ctx context.Context, blockCount uint64, lastB
|
||||||
return b.gpo.FeeHistory(ctx, blockCount, lastBlock, rewardPercentiles)
|
return b.gpo.FeeHistory(ctx, blockCount, lastBlock, rewardPercentiles)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (b *LesApiBackend) BlobBaseFee(ctx context.Context) *big.Int {
|
||||||
|
return new(big.Int)
|
||||||
|
}
|
||||||
|
|
||||||
func (b *LesApiBackend) ChainDb() ethdb.Database {
|
func (b *LesApiBackend) ChainDb() ethdb.Database {
|
||||||
return b.eth.chainDb
|
return b.eth.chainDb
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue