Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@emo-eth/immutable-splits

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@emo-eth/immutable-splits

ImmutableSplits are a set of lightweight, immutable, gas-efficient payout split contracts. They are designed to be deployed to a deterministic address by a factory contract, which tracks if a particular payout split has already been deployed.

  • 0.1.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

ImmutableSplits

ImmutableSplits are a set of lightweight, immutable, gas-efficient payout split contracts. They are designed to be deployed to a deterministic address by a factory contract, which tracks if a particular payout split has already been deployed.

ImmutableSplits

interface IImmutableSplit {
    function getRecipients() external view returns (Recipient[] memory);
    function splitErc20(address token) external;
    function proxyCall(address target, bytes calldata callData) external returns (bytes memory);
    function receiveHook() external payable;
    receive() external payable;
}
  • Automatically splits Ether/native-token payments to a predetermined set of recipients.
    • Recipients and their respective shares are set at deployment time and, for gas-efficiency, cannot be changed
  • Disburses ERC20 splits when the splitErc20 function is called
  • Recipient addresses included on an ImmutableSplit may call the proxyCall function to execute a transaction on behalf of the ImmutableSplit. This is useful for allowing withdrawal of non-fungible tokens accidentally sent to a smart contract, or to execute a withdrawal directly to the split contract.

ImmutableSplitFactory

interface IImmutableSplitFactory {
    function createImmutableSplit(Recipient[] calldata recipients) external returns (address payable);
    function getDeployedImmutableSplitAddress(Recipient[] calldata recipients) external returns (address);
}
  • Deploys ImmutableSplits to deterministic addresses
  • Tracks which ImmutableSplits have already been deployed, and will revert if attempting to re-deploy an ImmutableSplit for a given set of recipients + shares
  • When creating a new ImmutableSplit, an array of Recipients must be passed. The following validation is applied:
    • A Recipient may not have a bps value of 0 or 10_000.
    • The bps values of all Recipients must sum to 10_000.
  • To ensure duplicates are not created, the following rules are enforced:
  • The Recipients must be sorted by bps in ascending order.
  • If two or more Recipients have the same recipient, the Recipients with the numerically "lower" addresses must come first.

Keywords

FAQs

Package last updated on 25 Dec 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc