Search
⌘K
Overview
SDKs
Available SDKs
AI Integration
Ecosystem
Supported Clients
APIs
Authentication
Swap API
Cross-Chain Swaps (Fusion+)
Intent Swap (Fusion)
Classic Swap
Swap RWAs
Orderbook API
History API
Traces API
Portfolio API
Balance API
Gas Price API
Spot Price API
Token API
NFT API
Transaction Gateway API
Charts API
Domains API
Token Details API
Web3 RPC API
Introduction
Arbitrum
Avalanche
Base
BNB Chain
Cronos
Ethereum
Gnosis
Linea
Monad
Optimism
Polygon
Solana
Sonic
Unichain
ZKsync
Resolvers
Introduction
Terms of Use Resolver Terms
Limit Order
Quick Start
Contract interaction
Resolver farming guide
Unicorn Power setup
Intent/Fusion
Evm quicklinks
Solana quicklinks
Cross Chain
Cross chain examples
Exclusive Resolver API Terms
FAQ
API Error Messages
API Troubleshooting
Cors errors
Tx input data
Infrastructure fees
Docs·Resolvers·Limit Order·Unicorn Power setup

Unicorn Power setup

These steps initialize Unicorn Power farming:

  1. Approve staking 1INCH for 1inch contract.
  2. Stake 1INCH to gain Unicorn Power.
  3. Add a delegation pod to enable power delegation.
  4. Register yourself to be a resolver.
  5. (Optional) Change the default farm to a new farm.
  6. Delegate available Unicorn Power to yourself.
  7. Register a resolver at the whitelist.
  8. Set up a worker to settle orders.

Setup script example

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
const { ether, time } = require("@1inch/solidity-utils");
const { ethers } = require("hardhat");

// Setup environment
const inch = await ethers.getContractAt("IERC20", "0x111111111117dc0aa78b770fa6a738034120c302");
const st1inch = await ethers.getContractAt("IERC20", "0x9a0c8ff858d273f57072d714bca7411d717501d7");
const powerPod = await ethers.getContractAt("IERC20", "0xaccfac2339e16dc80c50d2fa81b5c2b049b4f947");
const whitelist = await ethers.getContractAt("WhitelistRegistry", "0xF55684BC536487394B423e70567413faB8e45E26");

const stakeAmount = ether("1000000");
const lockTime = time.duration.years("2");
const myShareToken = {
  name: "MyShareTokenName",
  symbol: "MST"
};
const worker = "..."; // Address of wallet which send transaction
const [resolver] = await ethers.getSigners();

// Ethers setup script

// approve 1inch staking
await await inch.connect(resolver).approve(st1inch.address, stakeAmount);
// stake 1inch token
await (await st1inch.connect(resolver).deposit(stakeAmount, lockTime)).wait();
// add delegation pod to
// 1. make it possible for any user to delegate staking power to
// the resolver's account
// 2. make it possible for a resolver to allocate its staking power for itself
await (await st1inch.connect(resolver).addPod(powerPod.address)).wait();

// register resolver's delegation token to count stakers' shares and rewards
await (
  await powerPod.connect(resolver).functions["register(string,string)"](myShareToken.name, myShareToken.symbol)
).wait();

// Delegate staked power to self
await (await powerPod.connect(resolver).delegate(resolver.address)).wait();

// Whitelist resolver (there should be enough unicorn power to be in top 10)
await (await whitelist.connect(resolver).register()).wait();

// Add worker address from which order settlement will be executed
await (await whitelist.connect(resolver).promote(1, worker)).wait();

Did you find what you need?