Receive payments for blocks that were sent
This commit is contained in:
parent
5160b267b6
commit
811b29fb5e
|
@ -161,11 +161,15 @@ proc new*(
|
|||
proc pricingHandler(peer: PeerId, pricing: Pricing) =
|
||||
engine.pricingHandler(peer, pricing)
|
||||
|
||||
proc paymentHandler(peer: PeerId, payment: SignedState) =
|
||||
engine.paymentHandler(peer, payment)
|
||||
|
||||
network.handlers = BitswapHandlers(
|
||||
onWantList: blockWantListHandler,
|
||||
onBlocks: blocksHandler,
|
||||
onPresence: blockPresenceHandler,
|
||||
onPricing: pricingHandler
|
||||
onPricing: pricingHandler,
|
||||
onPayment: paymentHandler
|
||||
)
|
||||
|
||||
return b
|
||||
|
|
|
@ -269,6 +269,19 @@ proc pricingHandler*(engine: BitswapEngine, peer: PeerID, pricing: Pricing) =
|
|||
|
||||
context.pricing = pricing.some
|
||||
|
||||
proc paymentHandler*(engine: BitswapEngine, peer: PeerId, payment: SignedState) =
|
||||
without context =? engine.getPeerCtx(peer).option and
|
||||
contextPricing =? context.pricing and
|
||||
enginePricing =? engine.pricing:
|
||||
return
|
||||
|
||||
if channel =? context.paymentChannel:
|
||||
let asset = enginePricing.asset
|
||||
let sender = contextPricing.address
|
||||
discard engine.wallet.acceptPayment(channel, asset, sender, payment)
|
||||
else:
|
||||
context.paymentChannel = engine.wallet.acceptChannel(payment).option
|
||||
|
||||
proc setupPeer*(b: BitswapEngine, peer: PeerID) =
|
||||
## Perform initial setup, such as want
|
||||
## list exchange
|
||||
|
|
|
@ -350,11 +350,15 @@ proc new*(
|
|||
proc sendPricing(id: PeerID, pricing: Pricing) =
|
||||
b.broadcastPricing(id, pricing)
|
||||
|
||||
proc sendPayment(id: PeerID, payment: SignedState) =
|
||||
b.broadcastPayment(id, payment)
|
||||
|
||||
b.request = BitswapRequest(
|
||||
sendWantList: sendWantList,
|
||||
sendBlocks: sendBlocks,
|
||||
sendPresence: sendPresence,
|
||||
sendPricing: sendPricing
|
||||
sendPricing: sendPricing,
|
||||
sendPayment: sendPayment
|
||||
)
|
||||
|
||||
b.init()
|
||||
|
|
|
@ -69,6 +69,8 @@ suite "Bitswap engine - 2 nodes":
|
|||
bitswap1.engine.wantList = blocks2.mapIt( it.cid )
|
||||
bitswap2.engine.wantList = blocks1.mapIt( it.cid )
|
||||
|
||||
pricing1.address = wallet1.address
|
||||
pricing2.address = wallet2.address
|
||||
bitswap1.engine.pricing = pricing1.some
|
||||
bitswap2.engine.pricing = pricing2.some
|
||||
|
||||
|
@ -147,6 +149,13 @@ suite "Bitswap engine - 2 nodes":
|
|||
|
||||
await done
|
||||
|
||||
test "receives payments for blocks that were sent":
|
||||
let blocks = await bitswap1.getBlocks(blocks2.mapIt(it.cid))
|
||||
let pricing = !bitswap2.engine.pricing
|
||||
await sleepAsync(100.millis)
|
||||
let channel = !peerCtx1.paymentChannel
|
||||
check wallet2.balance(channel, pricing.asset) > 0
|
||||
|
||||
suite "Bitswap - multiple nodes":
|
||||
let
|
||||
chunker = newRandomChunker(Rng.instance(), size = 4096, chunkSize = 256)
|
||||
|
|
Loading…
Reference in New Issue