Overview
Sablier V2 uses a forwarding proxy architecture designed to make the protocol more modular and extensible without introducing upgradeability. The particular forwarding proxy contract that we are using is PRBProxy. You can think of this as an extension of externally-owned accounts (EOAs in short).
When using the Sablier Interface, senders are required to deploy a proxy before being able to interact with the Sablier Protocol. However, deploying the proxy is a one-time event.
Do not confuse this approach with upgradable proxies. Despite having a similar name, these are two different concepts. PRBProxy is not upgradeable.
While reading the pages under this guide, it might be helpful to keep the following docs in separate tabs: Access Control, Proxy Target, and Technical Reference: Periphery.
Proxy is Sender
When creating streams via the proxy contract, the Sablier Protocol will record the proxy as the stream's sender:
Permit2
In the ProxyTarget, we use
Permit2 for all interactions that involve transfers of
ERC-20 tokens from the proxy owner to the proxy
contract. To be more specific, we are using the AllowanceTransfer
contract instead of SignatureTransfer
because it
offers a more user-friendly
nonce schema.