mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-06-05 14:38:42 +00:00
rename protocol version from eth71 to eth72
This commit is contained in:
parent
daee525741
commit
f6657afa3b
12 changed files with 21 additions and 21 deletions
|
|
@ -130,7 +130,7 @@ type blobTxMeta struct {
|
||||||
id uint64 // Storage ID in the pool's persistent store
|
id uint64 // Storage ID in the pool's persistent store
|
||||||
storageSize uint32 // Byte size in the pool's persistent store
|
storageSize uint32 // Byte size in the pool's persistent store
|
||||||
size uint64 // RLP-encoded size of transaction including the attached blob
|
size uint64 // RLP-encoded size of transaction including the attached blob
|
||||||
sizeWithoutBlob uint64 // RLP-encoded size of transaction without blob data (for ETH/71)
|
sizeWithoutBlob uint64 // RLP-encoded size of transaction without blob data (for ETH/72)
|
||||||
|
|
||||||
custody *types.CustodyBitmap
|
custody *types.CustodyBitmap
|
||||||
|
|
||||||
|
|
@ -1500,7 +1500,7 @@ func (p *BlobPool) getRLP(hash common.Hash) []byte {
|
||||||
// - (1) Store them separately on disk, tracking both IDs.
|
// - (1) Store them separately on disk, tracking both IDs.
|
||||||
// - (2) Keep transactions in memory and store cells on disk.
|
// - (2) Keep transactions in memory and store cells on disk.
|
||||||
//
|
//
|
||||||
// However, this approach does not fit well with eth71 peers, since blobs
|
// However, this approach does not fit well with eth72 peers, since blobs
|
||||||
// must be included in that case. It may require decoding and re-encoding,
|
// must be included in that case. It may require decoding and re-encoding,
|
||||||
// as well as double disk I/O each time.
|
// as well as double disk I/O each time.
|
||||||
func (p *BlobPool) Get(hash common.Hash, includeBlob bool) *types.Transaction {
|
func (p *BlobPool) Get(hash common.Hash, includeBlob bool) *types.Transaction {
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,7 @@ func NewBlobBuffer(addToPool func(*PooledBlobTx) error, dropPeer func(string)) *
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// AddTx buffers a blob transaction (without blobs) from an ETH/71 peer.
|
// AddTx buffers a blob transaction (without blobs) from an ETH/72 peer.
|
||||||
// If cells are already buffered, verification and pool insertion are attempted.
|
// If cells are already buffered, verification and pool insertion are attempted.
|
||||||
func (b *BlobBuffer) AddTx(tx *types.Transaction, peer string) error {
|
func (b *BlobBuffer) AddTx(tx *types.Transaction, peer string) error {
|
||||||
b.evict()
|
b.evict()
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// makeV1Tx creates a V1 blob transaction with cell proofs, then strips blobs
|
// makeV1Tx creates a V1 blob transaction with cell proofs, then strips blobs
|
||||||
// (simulating what ETH/71 peers send).
|
// (simulating what ETH/72 peers send).
|
||||||
func makeV1Tx(t *testing.T, nonce uint64, blobCount int, blobOffset int, key *ecdsa.PrivateKey) *types.Transaction {
|
func makeV1Tx(t *testing.T, nonce uint64, blobCount int, blobOffset int, key *ecdsa.PrivateKey) *types.Transaction {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
tx := makeMultiBlobTx(nonce, 1, 1, 1, blobCount, blobOffset, key, types.BlobSidecarVersion1)
|
tx := makeMultiBlobTx(nonce, 1, 1, 1, blobCount, blobOffset, key, types.BlobSidecarVersion1)
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ import (
|
||||||
type txMetadata struct {
|
type txMetadata struct {
|
||||||
id uint64 // the billy id of transction
|
id uint64 // the billy id of transction
|
||||||
size uint64 // the RLP encoded size of transaction (blobs are included)
|
size uint64 // the RLP encoded size of transaction (blobs are included)
|
||||||
sizeWithoutBlob uint64 // the RLP encoded size without blob data (for ETH/71 announcements)
|
sizeWithoutBlob uint64 // the RLP encoded size without blob data (for ETH/72 announcements)
|
||||||
custody types.CustodyBitmap
|
custody types.CustodyBitmap
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -88,7 +88,7 @@ type PendingFilter struct {
|
||||||
type TxMetadata struct {
|
type TxMetadata struct {
|
||||||
Type uint8 // The type of the transaction
|
Type uint8 // The type of the transaction
|
||||||
Size uint64 // The length of the 'rlp encoding' of a transaction (including blobs)
|
Size uint64 // The length of the 'rlp encoding' of a transaction (including blobs)
|
||||||
SizeWithoutBlob uint64 // The length without blob data (for ETH/71 announcements)
|
SizeWithoutBlob uint64 // The length without blob data (for ETH/72 announcements)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SubPool represents a specialized transaction pool that lives on its own (e.g.
|
// SubPool represents a specialized transaction pool that lives on its own (e.g.
|
||||||
|
|
@ -133,7 +133,7 @@ type SubPool interface {
|
||||||
Get(hash common.Hash, includeBlob bool) *types.Transaction
|
Get(hash common.Hash, includeBlob bool) *types.Transaction
|
||||||
|
|
||||||
// GetRLP returns a RLP-encoded transaction if it is contained in the pool.
|
// GetRLP returns a RLP-encoded transaction if it is contained in the pool.
|
||||||
// If includeBlob is false, blob data is stripped from blob transactions (ETH/71).
|
// If includeBlob is false, blob data is stripped from blob transactions (ETH/72).
|
||||||
GetRLP(hash common.Hash, includeBlob bool) []byte
|
GetRLP(hash common.Hash, includeBlob bool) []byte
|
||||||
|
|
||||||
// GetMetadata returns the transaction type and transaction size with the
|
// GetMetadata returns the transaction type and transaction size with the
|
||||||
|
|
|
||||||
|
|
@ -200,12 +200,12 @@ func newHandler(config *handlerConfig) (*handler, error) {
|
||||||
addTxs := func(peer string, txs []*types.Transaction) []error {
|
addTxs := func(peer string, txs []*types.Transaction) []error {
|
||||||
errs := make([]error, len(txs))
|
errs := make([]error, len(txs))
|
||||||
p := h.peers.peer(peer)
|
p := h.peers.peer(peer)
|
||||||
isETH71 := p != nil && p.Version() >= eth.ETH71
|
isETH72 := p != nil && p.Version() >= eth.ETH72
|
||||||
|
|
||||||
var poolTxs []*types.Transaction
|
var poolTxs []*types.Transaction
|
||||||
var index []int
|
var index []int
|
||||||
for i, tx := range txs {
|
for i, tx := range txs {
|
||||||
if isETH71 && tx.Type() == types.BlobTxType {
|
if isETH72 && tx.Type() == types.BlobTxType {
|
||||||
errs[i] = h.blobBuffer.AddTx(tx, peer)
|
errs[i] = h.blobBuffer.AddTx(tx, peer)
|
||||||
} else {
|
} else {
|
||||||
poolTxs = append(poolTxs, tx)
|
poolTxs = append(poolTxs, tx)
|
||||||
|
|
|
||||||
|
|
@ -113,9 +113,9 @@ func handleTransactions(peer *eth.Peer, list []*types.Transaction, directBroadca
|
||||||
// If we receive any blob transactions missing sidecars, or with
|
// If we receive any blob transactions missing sidecars, or with
|
||||||
// sidecars that don't correspond to the versioned hashes reported
|
// sidecars that don't correspond to the versioned hashes reported
|
||||||
// in the header, disconnect from the sending peer.
|
// in the header, disconnect from the sending peer.
|
||||||
if peer.Version() >= eth.ETH71 {
|
if peer.Version() >= eth.ETH72 {
|
||||||
if tx.BlobTxSidecar() != nil && len(tx.BlobTxSidecar().Blobs) != 0 {
|
if tx.BlobTxSidecar() != nil && len(tx.BlobTxSidecar().Blobs) != 0 {
|
||||||
return fmt.Errorf("not allowed to respond with full-blob transaction under eth71")
|
return fmt.Errorf("not allowed to respond with full-blob transaction under eth72")
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if tx.BlobTxSidecar() == nil {
|
if tx.BlobTxSidecar() == nil {
|
||||||
|
|
|
||||||
|
|
@ -133,7 +133,7 @@ func (p *Peer) announceTransactions() {
|
||||||
}
|
}
|
||||||
pending = append(pending, queue[count])
|
pending = append(pending, queue[count])
|
||||||
pendingTypes = append(pendingTypes, meta.Type)
|
pendingTypes = append(pendingTypes, meta.Type)
|
||||||
if p.version >= ETH71 && meta.SizeWithoutBlob > 0 {
|
if p.version >= ETH72 && meta.SizeWithoutBlob > 0 {
|
||||||
pendingSizes = append(pendingSizes, uint32(meta.SizeWithoutBlob))
|
pendingSizes = append(pendingSizes, uint32(meta.SizeWithoutBlob))
|
||||||
} else {
|
} else {
|
||||||
pendingSizes = append(pendingSizes, uint32(meta.Size))
|
pendingSizes = append(pendingSizes, uint32(meta.Size))
|
||||||
|
|
|
||||||
|
|
@ -194,7 +194,7 @@ var eth69 = map[uint64]msgHandler{
|
||||||
BlockRangeUpdateMsg: handleBlockRangeUpdate,
|
BlockRangeUpdateMsg: handleBlockRangeUpdate,
|
||||||
}
|
}
|
||||||
|
|
||||||
var eth71 = map[uint64]msgHandler{
|
var eth72 = map[uint64]msgHandler{
|
||||||
TransactionsMsg: handleTransactions,
|
TransactionsMsg: handleTransactions,
|
||||||
NewPooledTransactionHashesMsg: handleNewPooledTransactionHashes71,
|
NewPooledTransactionHashesMsg: handleNewPooledTransactionHashes71,
|
||||||
GetBlockHeadersMsg: handleGetBlockHeaders,
|
GetBlockHeadersMsg: handleGetBlockHeaders,
|
||||||
|
|
@ -227,8 +227,8 @@ func handleMessage(backend Backend, peer *Peer) error {
|
||||||
switch peer.version {
|
switch peer.version {
|
||||||
case ETH69:
|
case ETH69:
|
||||||
handlers = eth69
|
handlers = eth69
|
||||||
case ETH71:
|
case ETH72:
|
||||||
handlers = eth71
|
handlers = eth72
|
||||||
default:
|
default:
|
||||||
return fmt.Errorf("unknown eth protocol version: %v", peer.version)
|
return fmt.Errorf("unknown eth protocol version: %v", peer.version)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -523,7 +523,7 @@ func handleGetPooledTransactions(backend Backend, msg Decoder, peer *Peer) error
|
||||||
if err := msg.Decode(&query); err != nil {
|
if err := msg.Decode(&query); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
hashes, txs := answerGetPooledTransactions(backend, query.GetPooledTransactionsRequest, peer.version < ETH71)
|
hashes, txs := answerGetPooledTransactions(backend, query.GetPooledTransactionsRequest, peer.version < ETH72)
|
||||||
return peer.ReplyPooledTransactionsRLP(query.RequestId, hashes, txs)
|
return peer.ReplyPooledTransactionsRLP(query.RequestId, hashes, txs)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -172,7 +172,7 @@ func (p *Peer) AsyncSendTransactions(hashes []common.Hash) {
|
||||||
func (p *Peer) sendPooledTransactionHashes(hashes []common.Hash, types []byte, sizes []uint32, cells types.CustodyBitmap) error {
|
func (p *Peer) sendPooledTransactionHashes(hashes []common.Hash, types []byte, sizes []uint32, cells types.CustodyBitmap) error {
|
||||||
// Mark all the transactions as known, but ensure we don't overflow our limits
|
// Mark all the transactions as known, but ensure we don't overflow our limits
|
||||||
p.knownTxs.Add(hashes...)
|
p.knownTxs.Add(hashes...)
|
||||||
if p.version >= ETH71 {
|
if p.version >= ETH72 {
|
||||||
return p2p.Send(p.rw, NewPooledTransactionHashesMsg, NewPooledTransactionHashesPacket71{Types: types, Sizes: sizes, Hashes: hashes, Mask: cells})
|
return p2p.Send(p.rw, NewPooledTransactionHashesMsg, NewPooledTransactionHashesPacket71{Types: types, Sizes: sizes, Hashes: hashes, Mask: cells})
|
||||||
}
|
}
|
||||||
return p2p.Send(p.rw, NewPooledTransactionHashesMsg, NewPooledTransactionHashesPacket70{Types: types, Sizes: sizes, Hashes: hashes})
|
return p2p.Send(p.rw, NewPooledTransactionHashesMsg, NewPooledTransactionHashesPacket70{Types: types, Sizes: sizes, Hashes: hashes})
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ import (
|
||||||
// Constants to match up protocol versions and messages
|
// Constants to match up protocol versions and messages
|
||||||
const (
|
const (
|
||||||
ETH69 = 69
|
ETH69 = 69
|
||||||
ETH71 = 71
|
ETH72 = 72
|
||||||
)
|
)
|
||||||
|
|
||||||
// ProtocolName is the official short name of the `eth` protocol used during
|
// ProtocolName is the official short name of the `eth` protocol used during
|
||||||
|
|
@ -40,11 +40,11 @@ const ProtocolName = "eth"
|
||||||
|
|
||||||
// ProtocolVersions are the supported versions of the `eth` protocol (first
|
// ProtocolVersions are the supported versions of the `eth` protocol (first
|
||||||
// is primary).
|
// is primary).
|
||||||
var ProtocolVersions = []uint{ETH71, ETH69}
|
var ProtocolVersions = []uint{ETH72, ETH69}
|
||||||
|
|
||||||
// protocolLengths are the number of implemented message corresponding to
|
// protocolLengths are the number of implemented message corresponding to
|
||||||
// different protocol versions.
|
// different protocol versions.
|
||||||
var protocolLengths = map[uint]uint64{ETH69: 18, ETH71: 20}
|
var protocolLengths = map[uint]uint64{ETH69: 18, ETH72: 20}
|
||||||
|
|
||||||
// maxMessageSize is the maximum cap on the size of a protocol message.
|
// maxMessageSize is the maximum cap on the size of a protocol message.
|
||||||
const maxMessageSize = 10 * 1024 * 1024
|
const maxMessageSize = 10 * 1024 * 1024
|
||||||
|
|
@ -241,7 +241,7 @@ type NewPooledTransactionHashesPacket70 struct {
|
||||||
Hashes []common.Hash
|
Hashes []common.Hash
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewPooledTransactionHashesPacket71 represents a transaction announcement packet on eth/71
|
// NewPooledTransactionHashesPacket71 represents a transaction announcement packet on ETH/72
|
||||||
// with an additional custody bitmap field for cell-based blob data availability.
|
// with an additional custody bitmap field for cell-based blob data availability.
|
||||||
type NewPooledTransactionHashesPacket71 struct {
|
type NewPooledTransactionHashesPacket71 struct {
|
||||||
Types []byte
|
Types []byte
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue