Інтеграція з NEAR Chain Signatures
Крос-чейн взаємодія традиційно вимагає мостів або деплою контрактів на кожному ланцюзі. Ми пропонуємо альтернативу — інтеграцію з NEAR Chain Signatures під ключ. Один NEAR акаунт керує активами на Ethereum, Bitcoin, Solana без додаткових контрактів. Наш досвід показує зниження часу на 40% і вартості на 60% порівняно з класичними мостами. Оцінимо ваш проєкт безкоштовно.
Принцип роботи
В основі — MPC (Multi-Party Computation) мережа з NEAR валідаторів, які колективно зберігають master key. Користувач запитує підпис транзакції для іншого ланцюга, MPC мережа генерує підпис через threshold cryptography. Результуючий підпис — валідний підпис для цільового ланцюга, який можна broadcast-ити.
Це означає: ваш NEAR акаунт може контролювати Bitcoin адресу, Ethereum адресу, Solana адресу — без seed phrase для кожної. Один NEAR акаунт = доступ до всіх активів на всіх ланцюгах.
NEAR Account (alice.near)
├── Controls ETH address: 0x1234... (secp256k1 derived key)
├── Controls BTC address: bc1q... (secp256k1 derived key)
└── Controls SOL address: ABC... (ed25519 derived key)
Що таке derivation path і навіщо він потрібен?
Кожен NEAR акаунт може отримати кілька адрес на зовнішніх ланцюгах через derivation path. Один акаунт керує безліччю гаманців: alice.near з path 'eth-1' дає одну ETH адресу, з path 'eth-2' — іншу, з path 'btc-main' — BTC адресу. Це дозволяє структурувати активи за призначенням.
Приклад генерації адрес ETH і BTC
const ethPath = `ethereum-1`;
const btcPath = `bitcoin-main`;
const ethAddress = await deriveAddress(nearAccount, ethPath, 'secp256k1');
const btcAddress = await deriveAddress(nearAccount, btcPath, 'secp256k1');
Як Chain Signatures підписує транзакцію для іншого ланцюга?
Процес складається з кількох кроків. Спочатку ви формуєте unsigned транзакцію для цільового ланцюга (наприклад, Ethereum). Потім хеш цієї транзакції відправляється на контракт v1.signer.near. MPC мережа валідаторів генерує ECDSA або EdDSA підпис через threshold cryptography. Отриманий підпис сумісний з цільовим ланцюгом — ви підставляєте його в транзакцію і відправляєте безпосередньо.
import { connect, KeyPair, utils } from "near-api-js";
import { CONTRACT_ID } from "./constants";
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",
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
) {
const ethAddress = await getEthAddressFromNear(nearAccount, derivationPath);
const provider = new ethers.JsonRpcProvider("https://eth.llamarpc.com");
const nonce = await provider.getTransactionCount(ethAddress);
const feeData = await provider.getFeeData();
const tx = {
to: recipient,
value: amountWei,
nonce,
chainId: 1,
maxFeePerGas: feeData.maxFeePerGas,
maxPriorityFeePerGas: feeData.maxPriorityFeePerGas,
gasLimit: 21000n,
type: 2,
};
const serialized = ethers.Transaction.from(tx).unsignedSerialized;
const payload = ethers.getBytes(ethers.keccak256(serialized));
const signature = await requestEthSignature(
nearAccount,
Buffer.from(payload).toString("hex"),
derivationPath
);
const signedTx = ethers.Transaction.from({
...tx,
signature: {
r: "0x" + signature.r,
s: "0x" + signature.s,
v: signature.v,
},
});
const txResponse = await provider.broadcastTransaction(signedTx.serialized);
return txResponse.wait();
}
Bitcoin інтеграція
Система підтримує Bitcoin (secp256k1 + P2WPKH/P2TR). Це унікальна можливість: більшість інших cross-chain протоколів не підтримують Bitcoin нативно. За допомогою [NEAR Chain Signatures документація] (https://docs.near.org/concepts/chain-signatures) ми реалізували підпис Bitcoin-транзакцій.
import * as bitcoin from "bitcoinjs-lib";
async function sendBitcoinFromNear(
nearAccount: Account,
recipient: string,
satoshis: number,
derivationPath: string
) {
const network = bitcoin.networks.bitcoin;
const btcAddress = await getBtcAddressFromNear(nearAccount, derivationPath);
const utxos = await fetchUTXOs(btcAddress);
const psbt = new bitcoin.Psbt({ network });
for (const utxo of utxos) {
psbt.addInput({ hash: utxo.txid, index: utxo.vout, witnessUtxo: utxo.witnessUtxo });
}
psbt.addOutput({ address: recipient, value: satoshis });
for (let i = 0; i < utxos.length; i++) {
const sighash = psbt.data.inputs[i].sighashType ?? bitcoin.Transaction.SIGHASH_ALL;
const hash = psbt.__CACHE.__TX.hashForWitnessV0(i, psbt.data.inputs[i].witnessScript!, utxos[i].value, sighash);
const signature = await requestBtcSignature(
nearAccount,
hash.toString("hex"),
derivationPath
);
psbt.finalizeInput(i, /* custom finalizer with MPC signature */);
}
const rawTx = psbt.extractTransaction().toHex();
return broadcastBitcoin(rawTx);
}
Варіанти застосування
Omnichain DeFi. dApp на NEAR, що керує позиціями на Ethereum AAVE, Uniswap, GMX без bridge. Користувач взаємодіє тільки з NEAR (дешево, швидко), Chain Signatures виконує дії на Ethereum.
Cross-chain liquidation bot. Моніторинг позицій на кількох ланцюгах, автоматична ліквідація з використанням Chain Signatures для підпису транзакцій без попереднього завантаження ETH на executor адресу.
Multi-chain portfolio management. Управління активами на Ethereum, Bitcoin, Solana з одного NEAR акаунту.
Atomic swaps без bridge. ETH ↔ BTC без centralised exchange, з on-chain гарантіями через HTLC + Chain Signatures.
Порівняння Chain Signatures і L2-мостів
| Критерій | Chain Signatures | Традиційні мости |
|---|---|---|
| Деплой контрактів на цільовому ланцюзі | Не потрібен | Потрібен на кожному ланцюзі |
| Блокування ліквідності | Немає | Так (заморозка в bridge) |
| Час підтвердження | 3-5 секунд | 5-30 хвилин |
| Ризики | MPC-компрометація (порогова атака) | Злом мосту (історично часто) |
| Підтримка Bitcoin | Так | Рідко |
Chain Signatures у 3-5 разів швидше та дешевше при атомарних обмінах між ланцюгами.
Обмеження та зрілість
Дане рішення — відносно новий продукт (запуск mainnet). Зрілість інфраструктури нижча, ніж у Axelar або LayerZero. MPC latency: підпис займає 3-5 секунд. Вартість: кожен sign запит коштує ~0.1 NEAR + gas.
Стек розробки
- Frontend: React + near-api-js
- NEAR smart contracts: Rust (near-sdk-rs) або TypeScript (near-sdk-js)
- Target chain interactions: ethers.js, bitcoinjs-lib, @solana/web3.js
- MPC контракт: v1.signer.near (mainnet), v1.signer-prod.testnet (testnet)
Чому варто обрати Chain Signatures для свого проєкту?
Якщо ваше завдання — omnichain DeFi, мультичейн-портфель або автоматизація без bridge, протокол дає перевагу: єдина точка управління, низька затримка, скорочення витрат на інфраструктуру в 3 рази. Оцінимо ваш сценарій на пілотному періоді — зв'яжіться з нами.
Що входить в інтеграцію
- Архітектурний дизайн та вибір derivation paths
- Клієнтський код на TypeScript для Ethereum, Bitcoin, Solana
- Налаштування MPC контракту та управління gas-бюджетом
- Документацію з обробки помилок та fallback-стратегій
- Тестування на testnet та mainnet
- Підтримку в період експлуатації
Строки
- NEAR акаунт + Chain Signatures базовий флоу: 2-3 тижні
- Ethereum інтеграція (транзакції + ERC-20): +1-2 тижні
- Bitcoin підтримка: +2-3 тижні
- Повноцінний omnichain dApp: 2-3 місяці
Наша команда має 5-річний досвід у блокчейні та більше 10 реалізованих проєктів. Зв'яжіться з нами для оцінки вашого сценарію — допоможемо визначити, чи підходить технологія для вашого завдання. Отримайте консультацію безкоштовно.







