Every transaction sent to the network must include one or more signatures from a valid key pair.
Multiple signatures allow for multi-transfers, trades, minting, and crafting where more than one wallet or token is involved in the transaction. With discrete accounts, more than one signature may be required to control the account. In governance, multiple owners of a discrete account can approve a vote together.
Transfers of Paratokens can be simple or complex, including the ability to include multiple senders and recipients.
To perform a trade, two or more accounts could sign a transfer transaction.
Transaction Fee Delegation
A transaction can include a fee payer signature, which allows someone else to sign responsibility for fees before broadcasting.
This is hugely beneficial for companies and creators who want to subsidize transaction costs for their users.
Discrete Accounts are unique addresses that can be created and operated on the parachain. They do not have an associated private key.
A discrete account’s address can be used in any transaction, if that transaction is also signed by a wallet that is allowed to use the discrete account.
A discrete account can be configured with various permissions and roles:
- Can set operators, owners and admins
- Can set operators
- Can sign for transactions
More than one signature may be required per role if multisig security is needed; for example, these accounts can be used by a company’s stakeholders to securely manage its assets.
Fuel Tanks are special discrete accounts that are used purely for transaction fees. Developers can choose to subsidize costs for their customers by depositing EFI tokens to a Fuel Tank they control. EFI tokens deposited to a Fuel Tank cannot be withdrawn.
A fuel tank can whitelist specific tokens, tags, transaction types or users that will be permitted to use it.
The fuel tank’s ID may be specified in any transaction. The chosen fuel tank will cover transaction costs if its requirements are met. Any remaining costs will be paid by the Fee Payer.
A fuel tank can be configured with owners, admins and operators who may tap into it for transaction fees.
Scopes are added to a fuel tank to fine-tune its permissions for specific operators, tokens, time limits and value limits.
Crafting allows existing tokens to be modified, or new tokens to be created by using a Recipe.
A recipe is a signed message that is generated completely off-chain. Anyone who has a copy of the recipe will be able to execute it on Efinity. The system is useful for gamifying collectibles with minimal effort. Redemption of multiple “common” tokens for a rare token is easy to achieve and may allow for some simple game mechanics.
A recipe may require ownership of certain tokens (for example, a hammer and an anvil), and it can be coded to perform a number of actions: minting, burning, melting or transferring.
The recipe creator may limit the number of times a recipe can be used, or even blacklist a recipe ID directly.
Tags can be used to group related tokens (for example, covering transaction fees for an entire game’s token collection).
Efinity Swap is an automated conversion function which further facilitates exchanges of Paratokens by allowing automatic conversion of Paratokens into other Paratokens without friction, in order to complete existing Bid Orders and Ask Orders involving other Paratokens. Existing Bid and Ask orders are used to facilitate these swaps.
Paratokens that meet a minimum threshold of Bids and Ask orders are enabled by the chain for these automatic swaps.