Payments in Snowflake
Payments in Snowflake follow five predominant patterns:
Self-Initiated
Resolver-Initiated
Resolver-Initiated Via
Resolver-As-Escrow
Resolver-As-Escrow Via
Initiator\Type
Transfer
Withdraw
Self
EIN - EIN
EIN - Address
Resolver
EIN - EIN
EIN - Address
Resolver Via
EIN - Via - EIN
EIN - Via - Address
Resolver-Escrow
Resolver - EIN
Resolver - Address
Resolver-Escrow Via
Resolver - Via - EIN
Resolver - Via - Address
Each payment pattern can be applied with an end-destination of another EIN
or an address
depending on whether the HYDRO is staying within Snowflake or leaving it, per the DApp developer's choice. We consider payments with end-destination EINs
to be transfer
functions while end-destination address
payments are considered withdrawals
, as the HYDRO balances are no longer contained within the Snowflake smart contract.
The two "via" patterns take advantage of via
contracts. In a standard ERC-20 token transfer, tokens are transferred from point A to point B upon execution of a transfer
function. Via contracts still denote a starting destination, a target destination, and an amount; however, they allow arbitrary logic to be executed with those parameters prior to completion of the transfer. Examples could include:
Routing the transfers through side-chains where multiple sub-transfers can occur.
Freezing the tokens in a contract that intermittently disburses them to the end-destination provided certain criteria persist.
Hot-swapping a token-transfer, so the receiving party receives ETH, DAI, or any other currency they would like.
Obfuscating the tokens through privacy protocols.
The Hydro team will focus on building robust, cutting-edge, generic via
contracts in the "Tide" phase of Project Hydro. Until then, however, developers are encouraged to write custom via
contracts or follow generic patterns as-needed for using via
contracts.
Last updated
Was this helpful?