🔬
JediSwap
  • 👋Welcome to JediSwap
  • 🛠️Become a contributor
  • 🎁DeFi spring STRK incentives for v2
  • 🎁DeFi Spring STRK incentives for v1
  • FAQ
  • How to use JediSwap
    • How to set up a Starknet wallet
      • How to set up an Argent X wallet
      • How to set up an Argent Web Wallet
      • How to set up a Braavos wallet
    • How to bridge assets to Starknet
      • How to bridge to Starknet using Starkgate
      • How to bridge to Starknet using Orbiter Finance
      • How to bridge to Starknet using LayerSwap
    • How to make a swap
    • How to add liquidity
      • How to add liquidity V1
      • How to add liquidity V2
    • How to ZAP
      • How to ZAP from Ethereum L1 to Starknet
      • How to ZAP on Starknet
    • Points
      • LP Leaderboard
      • Volume Leaderboard
  • For Developers
    • Jediswap v2
      • Core
        • jediswap_v2_factory
        • jediswap_v2_pool
      • Periphery
        • jediswap_v2_nft_position_manager
        • jediswap_v2_swap_router
      • Contract Addresses
      • Deprecated Contract Addresses
    • Jediswap v1
      • Smart Contract integration
        • Implement a swap
        • Providing liquidity
        • Pair Addresses
      • Smart contract reference
        • Router
        • Pair
        • Factory
        • Pair (ERC 20)
  • Risks associated with JediSwap
Powered by GitBook
On this page
  • Code
  • Address
  • Events
  • PairCreated​
  • View Functions
  • get_pair
  • get_all_pairs​
  • get_num_of_pairs​
  • get_fee_to​
  • get_fee_to_setter​
  • get_pair_contract_class_hash​
  • State-Changing Functions
  • create_pair​
  • set_fee_to​
  • set_fee_to_setter​
  • Interface
  • ABI
  1. For Developers
  2. Jediswap v1
  3. Smart contract reference

Factory

PreviousPairNextPair (ERC 20)

Last updated 1 year ago

Code

Address

Factory is deployed at:

Starknet Alpha Testnet:

Starknet Alpha Mainnet:

Events

PairCreated​

@event
func PairCreated(token0: felt, token1: felt, pair: felt, total_pairs: felt):
end

Emitted each time a pair is created via .

  • The final uint log value will be 1 for the first pair created, 2 for the second, etc.

View Functions

get_pair

func get_pair(token0: felt, token1: felt) -> (pair: felt):

Returns the address of the pair for token0 and token1, if it has been created, else address(0).

  • token0 and token1 are interchangeable.

get_all_pairs​

func get_all_pairs() -> (all_pairs_len: felt, all_pairs: felt*):

Returns the number of pairs and addresses of all pairs created.

get_num_of_pairs​

func get_num_of_pairs() -> (num_of_pairs: felt):

Returns the number of pairs created.

get_fee_to​

func get_fee_to() -> (address: felt):

Get fee recipient address. See Protocol Charge Calculation. TODO

get_fee_to_setter​

func get_fee_to_setter() -> (address: felt):

The address allowed to change fee_to via set_fee_to.

get_pair_contract_class_hash​

func get_pair_contract_class_hash() -> (class_hash: felt):

State-Changing Functions

create_pair​

func create_pair(tokenA: felt, tokenB: felt) -> (pair: felt):

Creates a pair for tokenA and tokenB.

  • tokenA and tokenB are interchangeable.

set_fee_to​

func set_fee_to(new_fee_to: felt):

Updates fee recipient

  • only fee_to_setter can call.

set_fee_to_setter​

func set_fee_to_setter(new_fee_to_setter: felt):

Updates fee to setter

  • only fee_to_setter can call.

  • new_fee_to_setter can not be zero

Interface

%lang starknet

@contract_interface
namespace IFactory:
    func get_pair(token0: felt, token1: felt) -> (pair: felt):
    end

    func get_all_pairs() -> (all_pairs_len: felt, all_pairs: felt*):
    end
    
    func get_num_of_pairs() -> (num_of_pairs: felt):
    end

    func get_fee_to() -> (address: felt):
    end

    ​func get_fee_to_setter() -> (address: felt):
    end

    ​func get_pair_contract_class_hash() -> (class_hash: felt):
    end

    ​func create_pair(tokenA: felt, tokenB: felt) -> (pair: felt):
    end

    ​func set_fee_to(new_fee_to: felt):
    end

    ​func set_fee_to_setter(new_fee_to_setter: felt):
    end
end

ABI

[
    {
        "data": [
            {
                "name": "token0",
                "type": "felt"
            },
            {
                "name": "token1",
                "type": "felt"
            },
            {
                "name": "pair",
                "type": "felt"
            },
            {
                "name": "total_pairs",
                "type": "felt"
            }
        ],
        "keys": [],
        "name": "PairCreated",
        "type": "event"
    },
    {
        "inputs": [
            {
                "name": "pair_contract_class_hash",
                "type": "felt"
            },
            {
                "name": "fee_to_setter",
                "type": "felt"
            }
        ],
        "name": "constructor",
        "outputs": [],
        "type": "constructor"
    },
    {
        "inputs": [
            {
                "name": "token0",
                "type": "felt"
            },
            {
                "name": "token1",
                "type": "felt"
            }
        ],
        "name": "get_pair",
        "outputs": [
            {
                "name": "pair",
                "type": "felt"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "get_all_pairs",
        "outputs": [
            {
                "name": "all_pairs_len",
                "type": "felt"
            },
            {
                "name": "all_pairs",
                "type": "felt*"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "get_num_of_pairs",
        "outputs": [
            {
                "name": "num_of_pairs",
                "type": "felt"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "get_fee_to",
        "outputs": [
            {
                "name": "address",
                "type": "felt"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "get_fee_to_setter",
        "outputs": [
            {
                "name": "address",
                "type": "felt"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "get_pair_contract_class_hash",
        "outputs": [
            {
                "name": "class_hash",
                "type": "felt"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "name": "tokenA",
                "type": "felt"
            },
            {
                "name": "tokenB",
                "type": "felt"
            }
        ],
        "name": "create_pair",
        "outputs": [
            {
                "name": "pair",
                "type": "felt"
            }
        ],
        "type": "function"
    },
    {
        "inputs": [
            {
                "name": "new_fee_to",
                "type": "felt"
            }
        ],
        "name": "set_fee_to",
        "outputs": [],
        "type": "function"
    },
    {
        "inputs": [
            {
                "name": "new_fee_to_setter",
                "type": "felt"
            }
        ],
        "name": "set_fee_to_setter",
        "outputs": [],
        "type": "function"
    }
]

Get the class hash of the contract which is deployed for each .

Emits .

Factory.cairo
0x0262744f8cea943dadc8823c318eaf24d0110dee2ee8026298f49a3bc58ed74a
0x00dad44c139a476c7a17fc8141e6db680e9abc9f56fe249a105094c44382c2fd
create_pair
Canvas(Pair)
create_pair
PairCreated