Thank you. We'll be in touch.
Oops! Something went wrong while submitting the form.

Modular

interoperability

layer

Superior swapping for users,
powerful modularity for builders

Collectively shaping the interoperability future with world class infrastructure & investors

MODULAR
INTEROPERABility
LAYER

t3rn offers fast, secure, and cost-efficient swapping, optimizing cross-chain executions by leveraging the modular layers of the t3rn stack for storage, validation, settlement and consensus.

01
02
03

Superior swapping for power users

Effortlessly send different crypto assets across multiple blockchain ecosystems through a single user interface.

Develop with us

Attractive opportunities for infrastructure providers

Become an Executor and generate income by processing cross-chain transactions on behalf of users.

Join the Community

Powerful modularity for developers

Experience the flexibility and ease of integration with the modular layers of the t3rn stack for storage, validation, settlement and consensus.

More info

Interoperability for platforms

t3rn intelligently supports the interoperable systems that the multichain future will be built on by working intellligently with any cross-chain transaction.

Develop with us

Reversibility for users

t3rn smart contract hubs have built-in fail safes that reverse failed transactions to their last secure point, ensuring that funds arent't lost.

Develop with us

Composability for developers

Open-source code depolyed with full on-chain provenance, allowing original authors to get paid every time their code executes.

Develop with us
01

Limitless Defi

Defi should never be limited to one blockchain, t3rn makes multichain defi not only possible, but highly secure too.

Learn more
02

On-chain Smart Contract Repository

Anyone can use the smart contracts stored in our open-source registry or get paid whenever a smart contract you upload is used.

Smart contracts can be uploaded as they are, in familiar languages like Solidity, ink!, WebAssembly or anything that compiles to WASM.

Learn more
03

Setting cross-chain standards (XBI)

The Web3 Foundation commissioned t3rn to build XBI, an easy-to-use standard for cross-chain messaging.

Learn more

#RegisterSmartContract {
  onEscrowTransferReceived(|user, btc_swap_amount|) => Result<StepState, Error> 
  {
     let price = 3rdPartyOracle::get_price("BTC/ETH");
     let btc = price * btc_swap_amount;
     let eth = Interlay::escrow_swap("BTC/ETH", btc, self.owner);
     let gno = Ethereum::uniswap::swap("ETH/GNO", eth, self.owner);
     Gnosis::transfer(mark, user, gno)
     Ok(())
  };
};


#[ink::contract]
mod get_best_price_from_oracles {
    use t3rn_sdk::{
        Chain::{Ethereum, Polygon, Gnosis},
        GlobalTypes::{Balance},
        Operation::{AddLiquidity, Assets, CallEvm, CallWasm, Swap, Transfer},
   };

    #[ink(storage)]
    pub struct MyPriceSearchContract {}

    impl MyPriceSearchContract {
        #[ink(message, payable)]
        pub fn on_transfer_received(&mut self, state: Option<State>, eth: Balance) {
            let usdc_price_ethereum = Ethereum::uniswap::get_price("BTC/USDC");
            let usdc_price_polygon = Polygon::uniswap::get_price("BTC/USDC");
            let usdc_price_gnosis = Gnosis::uniswap::get_price("BTC/USDC");

            if usdc_price_ethereum < usdc_price_polygon && usdc_price_ethereum < usdc_price_gnosis {
                let usdc = Ethereum::uniswap::swap("ETH/USDC", eth, self.owner);
                Ethereum::transfer(self.owner, usdc);
            } else if usdc_price_gnosis < usdc_price_polygon && usdc_price_gnosis < usdc_price_ethereum {
                let usdc = Gnosis::uniswap::swap("ETH/USDC", eth, self.owner);
                Gnosis::transfer(self.owner, usdc);
            } else {
                let usdc = Polygon::uniswap::swap("ETH/USDC", eth, self.owner);
                Polygon::transfer(self.owner, usdc);
            }
       }
    }
}


let para_id = 2001;
let uniswap_clone_addr = hex_literal::hex!("4f6a1caa01161180582092ecfac2502b").into();
let call = Call:Evm {
  caller: callee,
  dest: uniswap_clone_addr,
  value,
  input: ["swap", "DOT", "TRN", self.callee],
  gas_limit,
  ..Default::default()
};

let asset_id = XDOT::get_id();
let xbi_call = XBI::new()
  .with_call(para_id, call)
  .with_timeout_blocks(50)
  .with_max_execution_cost(10_000_000_000)
  .with_execution_asset(asset_id)
  .build();

let asset_id: u32 = 0;
let xbi_call = XBI::new()
   .with_withdraw_asset(Some(asset_id), 1_000_000_000_000)
   .with_buy_execution(Some(asset_id), 1_000_000_000_000)
   .with_transact(
       Some(1_000_000_000),
       init_open_channel_req(parachain, None, None, Some(relaychain_meta)),
   )
   .with_refund_surplus()
   .with_deposit_asset(Some(asset_id), 1, id_shadow)
   .build();


#RegisterSmartContract {
  onEscrowTransferReceived(|user, btc_swap_amount|) => Result<StepState, Error> {
     let price = 3rdPartyOracle::get_price("BTC/ETH");
     let btc = price * btc_swap_amount;
     let eth = Interlay::escrow_swap("BTC/ETH", btc, self.owner);
     let gno = Ethereum::uniswap::swap("ETH/GNO", eth, self.owner);
     Gnosis::transfer(mark, user, gno)
     Ok(())
  };
};

Limitless Defi

Defi should never be limited to one blockchain, t3rn makes multichain defi possible.

Learn more

#[ink::contract]
mod get_best_price_from_oracles {
    use t3rn_sdk::{
        Chain::{Ethereum, Polygon, Gnosis},
        GlobalTypes::{Balance},
        Operation::{AddLiquidity, Assets, CallEvm, CallWasm, Swap, Transfer},
   };

    #[ink(storage)]
    pub struct MyPriceSearchContract {}

    impl MyPriceSearchContract {
        #[ink(message, payable)]
        pub fn on_transfer_received(&mut self, state: Option<State>, eth: Balance) {
            let usdc_price_ethereum = Ethereum::uniswap::get_price("BTC/USDC");
            let usdc_price_polygon = Polygon::uniswap::get_price("BTC/USDC");
            let usdc_price_gnosis = Gnosis::uniswap::get_price("BTC/USDC");

            if usdc_price_ethereum < usdc_price_polygon && usdc_price_ethereum < usdc_price_gnosis {
                let usdc = Ethereum::uniswap::swap("ETH/USDC", eth, self.owner);
                Ethereum::transfer(self.owner, usdc);
            } else if usdc_price_gnosis < usdc_price_polygon && usdc_price_gnosis < usdc_price_ethereum {
                let usdc = Gnosis::uniswap::swap("ETH/USDC", eth, self.owner);
                Gnosis::transfer(self.owner, usdc);
            } else {
                let usdc = Polygon::uniswap::swap("ETH/USDC", eth, self.owner);
                Polygon::transfer(self.owner, usdc);
            }
       }
    }
}

On-chain Smart Contract Repository

Anyone can use the smart contracts stored in our open-source registry or get paid whenever a smart contract you upload is used.

Learn more

let para_id = 2001;
let uniswap_clone_addr = hex_literal::hex!("4f6a1caa01161180582092ecfac2502b").into();
let call = Call:Evm {
  caller: callee,
  dest: uniswap_clone_addr,
  value,
  input: ["swap", "DOT", "TRN", self.callee],
  gas_limit,
  ..Default::default()
};

let asset_id = XDOT::get_id();
let xbi_call = XBI::new()
  .with_call(para_id, call)
  .with_timeout_blocks(50)
  .with_max_execution_cost(10_000_000_000)
  .with_execution_asset(asset_id)
  .build();

let asset_id: u32 = 0;
let xbi_call = XBI::new()
   .with_withdraw_asset(Some(asset_id), 1_000_000_000_000)
   .with_buy_execution(Some(asset_id), 1_000_000_000_000)
   .with_transact(
       Some(1_000_000_000),
       init_open_channel_req(parachain, None, None, Some(relaychain_meta)),
   )
   .with_refund_surplus()
   .with_deposit_asset(Some(asset_id), 1, id_shadow)
   .build();

Setting cross-chain standards (XBI)

The Web3 Foundation commissioned t3rn to build XBI, an easy-to-use standard for cross-chain messaging.

Learn more