app.gainforest.wallet.pendingSend
A transfer from the account's donation wallet (app.gainforest.wallet.primary) that still needs more passkey approvals. Multi-approval wallets (threshold > 1) collect approvals asynchronously: the initiator stores the exact unsigned ERC-4337 UserOperation here together with their own approval, remaining passkey holders approve from their own devices, and the final approver signs the full userOp hash which submits the operation on-chain and deletes this record. Every stored approval is a WebAuthn assertion over the operation's LIGHT hash (the SmartVault scheme where all but the last signer sign a gas-bounded subset of the operation). Approvals are verified off-chain before being stored and re-verified before submission, so a hand-crafted record cannot forge or brick a transfer. Fixed rkey `self`: one pending transfer per wallet at a time.
Details · record, key literal:self
| Kind | record |
|---|---|
| Record key | literal:self |
| Authority | wallet.gainforest.app |
| Indexed |
Record
record · key literal:selfProperties
Raw token units as a decimal string. Redundant with callData, for display.
Light-hash approvals collected so far, in signing order (at most threshold − 1; the final approval is never stored).
DID of the signed-in account that started the transfer.
Full EntryPoint v0.7 userOp hash — signed by the final approver.
SmartVault light userOp hash — signed by every earlier approver.
Approval requirement of the wallet when this transfer was started; a mismatch with the current wallet invalidates the transfer.
minimum: 2maximum: 255
Recipient address (0x…, 20 bytes). Redundant with callData, for display; the server re-derives it from the operation.
What is being sent.
enum: ETH | USDC | USDT
#approval
objectA WebAuthn assertion over the light userOp hash by one enrolled passkey signer.
Properties
DID of the signed-in account that added this approval.
Authenticator data of the assertion, hex.
Index of "challenge" in clientDataJSON.
Client data JSON of the assertion.
WebAuthn credential id of the enrolled signer that approved.
secp256r1 signature r, decimal string.
secp256r1 signature s (low-s), decimal string.
Index of "type" in clientDataJSON.
#userOp
objectThe unsigned ERC-4337 v0.7 UserOperation, exactly as it will be submitted. Gas and fee fields are decimal strings.
Properties
vault.execute(...) calldata — exactly one ETH/USDC/USDT transfer.
factory
stringSmartVaultFactory address — present only while the vault is undeployed.
factoryData
stringcreateAccount calldata deploying the vault on first send.
EntryPoint nonce at preparation time; consumed nonces invalidate the transfer.
The wallet's vault address.