Skip to content

Commit 8e6ead8

Browse files
authored
Merge pull request #366 from xssnick/rldp-bbr
RLDP optimizations
2 parents 1578768 + 1e8b922 commit 8e6ead8

23 files changed

Lines changed: 3060 additions & 609 deletions

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
[![Based on TON][ton-svg]][ton]
66
[![Telegram Channel][tgc-svg]][tg-channel]
7-
![Coverage](https://img.shields.io/badge/Coverage-69.7%25-yellow)
7+
![Coverage](https://img.shields.io/badge/Coverage-70.4%25-brightgreen)
88

99
Golang library for interacting with TON blockchain.
1010

adnl/adnl.go

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ type ADNL struct {
7171
recvPriorityAddrVer int32
7272
ourAddrVerOnPeerSide int32
7373

74+
peerID []byte
75+
sharedKey []byte
7476
peerKey ed25519.PublicKey
7577
ourAddresses unsafe.Pointer
7678

@@ -175,6 +177,16 @@ func (a *ADNL) processPacket(packet *PacketContent, fromChannel bool) (err error
175177
if !fromChannel && packet.From != nil {
176178
a.mx.Lock()
177179
if a.peerKey == nil {
180+
a.sharedKey, err = keys.SharedKey(a.ourKey, packet.From.Key)
181+
if err != nil {
182+
return err
183+
}
184+
185+
a.peerID, err = tl.Hash(keys.PublicKeyED25519{Key: packet.From.Key})
186+
if err != nil {
187+
return err
188+
}
189+
178190
a.peerKey = packet.From.Key
179191
}
180192
a.mx.Unlock()
@@ -735,12 +747,11 @@ func (a *ADNL) GetAddressList() address.List {
735747
}
736748

737749
func (a *ADNL) GetID() []byte {
738-
id, _ := tl.Hash(keys.PublicKeyED25519{Key: a.peerKey})
739-
return id
750+
return append([]byte{}, a.peerID...)
740751
}
741752

742753
func (a *ADNL) GetPubKey() ed25519.PublicKey {
743-
return a.peerKey
754+
return append(ed25519.PublicKey{}, a.peerKey...)
744755
}
745756

746757
func (a *ADNL) Reinit() {
@@ -825,23 +836,14 @@ func (a *ADNL) createPacket(seqno int64, isResp bool, msgs ...any) ([]byte, erro
825836
hash := sha256.Sum256(packetData)
826837
checksum := hash[:]
827838

828-
key, err := keys.SharedKey(a.ourKey, a.peerKey)
829-
if err != nil {
830-
return nil, err
831-
}
832-
833-
ctr, err := keys.BuildSharedCipher(key, checksum)
839+
ctr, err := keys.BuildSharedCipher(a.sharedKey, checksum)
834840
if err != nil {
835841
return nil, err
836842
}
837843

838844
ctr.XORKeyStream(packetData, packetData)
839845

840-
enc, err := tl.Hash(keys.PublicKeyED25519{Key: a.peerKey})
841-
if err != nil {
842-
return nil, err
843-
}
844-
copy(bufData, enc)
846+
copy(bufData, a.peerID)
845847
copy(bufData[32:], a.ourKey.Public().(ed25519.PublicKey))
846848
copy(bufData[64:], checksum)
847849

adnl/gateway.go

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -431,8 +431,23 @@ func (g *Gateway) registerClient(addr net.Addr, key ed25519.PublicKey, id string
431431
addrList.Version = addrList.ReinitDate
432432

433433
a := g.initADNL()
434-
a.SetAddresses(addrList)
434+
435+
sharedKey, err := keys.SharedKey(a.ourKey, key)
436+
if err != nil {
437+
return nil, err
438+
}
439+
440+
peerId, err := tl.Hash(keys.PublicKeyED25519{Key: key})
441+
if err != nil {
442+
return nil, err
443+
}
444+
445+
a.peerID = peerId
446+
a.sharedKey = sharedKey
435447
a.peerKey = key
448+
449+
a.SetAddresses(addrList)
450+
436451
a.addr = addr.String()
437452
a.writer = newWriter(func(p []byte, deadline time.Time) (err error) {
438453
currentAddr := *(*net.Addr)(atomic.LoadPointer(&peer.addr))

adnl/packet.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ func (p *PacketContent) Serialize(buf *bytes.Buffer) (int, error) {
184184
binary.LittleEndian.PutUint32(tmp, _PacketContentID)
185185
buf.Write(tmp)
186186

187-
tl.ToBytesToBuffer(buf, p.Rand1)
187+
_ = tl.ToBytesToBuffer(buf, p.Rand1)
188188

189189
var flags uint32
190190
if p.Seqno != nil {
@@ -314,10 +314,10 @@ func (p *PacketContent) Serialize(buf *bytes.Buffer) (int, error) {
314314
}
315315

316316
if p.Signature != nil {
317-
tl.ToBytesToBuffer(buf, p.Signature)
317+
_ = tl.ToBytesToBuffer(buf, p.Signature)
318318
}
319319

320-
tl.ToBytesToBuffer(buf, p.Rand2)
320+
_ = tl.ToBytesToBuffer(buf, p.Rand2)
321321

322322
return payloadLen, nil
323323
}

0 commit comments

Comments
 (0)