Інтеграція NEAR Chain Signatures
NEAR Chain Signatures — принципово іншій підхід до крос-чейн взаємодії. Замість спеціалізованих bridge контрактів на кожному чейні, Chain Signatures дозволяють NEAR рахунку підписувати транзакції для будь-якого чейна: Ethereum, Bitcoin, Solana, Dogecoin — без розгортання чогось.
Як це працює
За основою: MPC (Multi-Party Computation) мережа NEAR валідаторів, які колективно тримають master key. Користувач запитує підпис транзакції для іншого чейна, MPC мережа генерує підпис через threshold криптографію. Результат — валідна підпис для цільового чейна, яку можна broadcast'ити.
Один NEAR рахунок контролює Bitcoin адресу, Ethereum адресу, Solana адресу — без seed фрази для кожної. Один NEAR рахунок = доступ до всіх активів.
Derivation paths
Кожен NEAR рахунок може отримати кілька адрес на зовнішніх чейнах via derivation path:
// alice.near з path "eth-1" → один ETH адрес
// alice.near з path "eth-2" → інший ETH адрес
// alice.near з path "btc-main" → BTC адрес
Один NEAR рахунок керує кількома wallet адресами на різних чейнах.
Запит на підпис
import { connect, utils } from "near-api-js";
async function requestEthSignature(
nearAccount: Account,
ethTxPayload: string,
derivationPath: string
): Promise<{ r: string; s: string; v: number }> {
const result = await nearAccount.functionCall({
contractId: "v1.signer.near", // MPC контракт
methodName: "sign",
args: {
payload: Array.from(Buffer.from(ethTxPayload, "hex")),
path: derivationPath,
key_version: 0,
},
gas: "300000000000000",
attachedDeposit: utils.format.parseNearAmount("0.1"),
});
const { big_r, s, recovery_id } = result as any;
return {
r: big_r.affine_point,
s: s.scalar,
v: recovery_id,
};
}
Повний флоу: NEAR → Ethereum транзакція
import { ethers } from "ethers";
async function sendEthFromNear(
nearAccount: Account,
recipient: string,
amountWei: bigint,
derivationPath: string
) {
// 1. Отримуємо Ethereum адрес
const ethAddress = await getEthAddressFromNear(nearAccount, derivationPath);
// 2. Отримуємо nonce та gas price
const provider = new ethers.JsonRpcProvider("https://eth.llamarpc.com");
const nonce = await provider.getTransactionCount(ethAddress);
const feeData = await provider.getFeeData();
// 3. Створюємо unsigned транзакцію
const tx = {
to: recipient,
value: amountWei,
nonce,
chainId: 1,
maxFeePerGas: feeData.maxFeePerGas,
maxPriorityFeePerGas: feeData.maxPriorityFeePerGas,
gasLimit: 21000n,
type: 2,
};
// 4. Серіалізуємо для підпису
const serialized = ethers.Transaction.from(tx).unsignedSerialized;
const payload = ethers.getBytes(ethers.keccak256(serialized));
// 5. Запитуємо підпис від MPC via NEAR
const signature = await requestEthSignature(
nearAccount,
Buffer.from(payload).toString("hex"),
derivationPath
);
// 6. Будуємо підписану транзакцію
const signedTx = ethers.Transaction.from({
...tx,
signature: {
r: "0x" + signature.r,
s: "0x" + signature.s,
v: signature.v,
},
});
// 7. Broadcast на Ethereum
const txResponse = await provider.broadcastTransaction(signedTx.serialized);
return txResponse.wait();
}
Bitcoin інтеграція
Chain Signatures підтримує Bitcoin нативно (secp256k1 + P2WPKH/P2TR).
Use cases
Omnichain DeFi. dApp на NEAR, керування позиціями на Ethereum AAVE, Uniswap без мосту.
Крос-чейн ліквідаційний бот. Моніторинг позицій на кількох чейнах, авто-ліквідація через підписи.
Мультичейн управління портфелем. Управління активами на Ethereum, Bitcoin, Solana з одного NEAR рахунку.
Atomic swaps без мосту. ETH ↔ BTC з on-chain HTLC гарантіями.
Обмеження
Chain Signatures відносно новий (mainnet 2024). Зрілість нижча ніж Axelar/LayerZero. MPC latency: підпис займає 3-5 секунд. Вартість: ~0.1 NEAR + газ на sign.
Stack: React + near-api-js, NEAR контракти (Rust/TypeScript), ethers.js/bitcoinjs-lib/@solana/web3.js.
Таймлайни: NEAR + Chain Signatures базовий флоу — 2-3 тижні. Ethereum інтеграція — +1-2 тижні. Bitcoin — +2-3 тижні. Повний omnichain dApp — 2-3 місяці.







