Claimable Transfers (Gifts)
Send shielded funds to an Ethereum wallet address that has not registered with Privacy Boost yet. The recipient claims by proving ownership of that address; you reclaim the funds if they never do. See Claimable Transfers for the concept and trust model.Sending a gift
The most common case: you know the recipient’s wallet address but they have not joined Privacy Boost. UsegiftFundToWallet. The refund deadline is a block
height after which you can reclaim an unclaimed gift; the min/max delay is
advertised from the server’s /info endpoint. Pass the current chain head as
currentBlock so the SDK can pre-validate the refund delay before submitting.
giftFund) so the gift ciphertext is sealed to their viewing key for the
smoothest discovery:
Funding parameters
Funding result
giftFund / giftFundToWallet return a TransferResult carrying two gift
fields in addition to the usual transfer fields:
Sharing the claim link
result.claimLink is a pbgift:v1:... string that carries the encrypted opening
the recipient needs. Share it out of band (message, QR code). Treat it like a
password — it reveals the gift’s amount and recipient to anyone who reads it.
Claiming a gift
The recipient registers Privacy Boost with the same wallet address, then claims. List the pending gifts addressed to the authenticated wallet:cGift (the list can shift as gifts settle):
acknowledgeUnknownSender must be true to claim. The hidden-sender model
cannot reveal who funded a gift, so the recipient explicitly acknowledges
accepting funds from an unknown sender. Surface this as a consent prompt.Refunding an unclaimed gift
A claim and a refund spend the same nullifier, so only one can ever settle. After the refund deadline passes, reclaim an unclaimed gift using the local record you saved at funding time.giftRefundByRecord takes the record’s index:
Gift records are what make a gift refundable. They are included in an
exported session, so persisting and restoring
the session keeps your unclaimed gifts refundable across restarts. If you ever
lose the record, you can still refund by supplying every field manually via
giftRefund(recipientWallet, blind, refundAfterBlock, tokenId, amount, fundingTreeNumber, giftLeafIndex).Previewing a claim link offline
Decode a claim link into a preview without any network call — useful to show the recipient what they are about to accept.decodeGiftLink is synchronous and
throwing (it works fully offline), so it does not need withContext:
Types
A third funding mode,
giftFundSecretBearer, binds a gift to a secret instead
of a wallet so it can be claimed before the recipient has any wallet. It is
experimental, disabled by default, and a bearer instrument (whoever holds
the link can claim). See the concept page
before considering it.