 9bdcbe0447
			
		
	
	9bdcbe0447
	
	
	
		
			
			Major integrations and fixes: - Added BACKBEAT SDK integration for P2P operation timing - Implemented beat-aware status tracking for distributed operations - Added Docker secrets support for secure license management - Resolved KACHING license validation via HTTPS/TLS - Updated docker-compose configuration for clean stack deployment - Disabled rollback policies to prevent deployment failures - Added license credential storage (CHORUS-DEV-MULTI-001) Technical improvements: - BACKBEAT P2P operation tracking with phase management - Enhanced configuration system with file-based secrets - Improved error handling for license validation - Clean separation of KACHING and CHORUS deployment stacks 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
		
			
				
	
	
		
			60 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package kbucket
 | |
| 
 | |
| import (
 | |
| 	"errors"
 | |
| 
 | |
| 	"github.com/minio/sha256-simd"
 | |
| 
 | |
| 	ks "github.com/libp2p/go-libp2p-kbucket/keyspace"
 | |
| 	"github.com/libp2p/go-libp2p/core/peer"
 | |
| 
 | |
| 	u "github.com/ipfs/boxo/util"
 | |
| )
 | |
| 
 | |
| // ErrLookupFailure is returned if a routing table query returns no results. This is NOT expected
 | |
| // behaviour
 | |
| var ErrLookupFailure = errors.New("failed to find any peer in table")
 | |
| 
 | |
| // ID for IpfsDHT is in the XORKeySpace
 | |
| //
 | |
| // The type dht.ID signifies that its contents have been hashed from either a
 | |
| // peer.ID or a util.Key. This unifies the keyspace
 | |
| type ID []byte
 | |
| 
 | |
| func (id ID) less(other ID) bool {
 | |
| 	a := ks.Key{Space: ks.XORKeySpace, Bytes: id}
 | |
| 	b := ks.Key{Space: ks.XORKeySpace, Bytes: other}
 | |
| 	return a.Less(b)
 | |
| }
 | |
| 
 | |
| func xor(a, b ID) ID {
 | |
| 	return ID(u.XOR(a, b))
 | |
| }
 | |
| 
 | |
| func CommonPrefixLen(a, b ID) int {
 | |
| 	return ks.ZeroPrefixLen(u.XOR(a, b))
 | |
| }
 | |
| 
 | |
| // ConvertPeerID creates a DHT ID by hashing a Peer ID (Multihash)
 | |
| func ConvertPeerID(id peer.ID) ID {
 | |
| 	hash := sha256.Sum256([]byte(id))
 | |
| 	return hash[:]
 | |
| }
 | |
| 
 | |
| // ConvertKey creates a DHT ID by hashing a local key (String)
 | |
| func ConvertKey(id string) ID {
 | |
| 	hash := sha256.Sum256([]byte(id))
 | |
| 	return hash[:]
 | |
| }
 | |
| 
 | |
| // Closer returns true if a is closer to key than b is
 | |
| func Closer(a, b peer.ID, key string) bool {
 | |
| 	aid := ConvertPeerID(a)
 | |
| 	bid := ConvertPeerID(b)
 | |
| 	tgt := ConvertKey(key)
 | |
| 	adist := xor(aid, tgt)
 | |
| 	bdist := xor(bid, tgt)
 | |
| 
 | |
| 	return adist.less(bdist)
 | |
| }
 |