Интеграция с NEAR Chain Signatures

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1 услугВсе 1306 услуг
Интеграция с NEAR Chain Signatures
Сложная
~3-5 рабочих дней
Часто задаваемые вопросы
Направления блокчейн-разработки
Этапы блокчейн-разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1258
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1170
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    873
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1092
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    563
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    830

Интеграция с NEAR Chain Signatures

NEAR Chain Signatures — принципиально иной подход к кросс-чейн взаимодействию. Вместо специализированных bridge контрактов на каждой цепи, Chain Signatures позволяет NEAR аккаунту подписывать транзакции для любой цепи: Ethereum, Bitcoin, Solana, Dogecoin — без деплоя чего-либо на этих цепях.

Принцип работы

В основе — 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 paths

Каждый NEAR аккаунт может получить несколько адресов на внешних цепях через derivation path:

// alice.near с path "eth-1" → один ETH адрес
// alice.near с path "eth-2" → другой ETH адрес
// alice.near с path "btc-main" → BTC адрес

Это позволяет одному NEAR аккаунту управлять множеством адресов-кошельков на разных цепях.

Запрос подписи

import { connect, KeyPair, utils } from "near-api-js";
import { CONTRACT_ID } from "./constants";

// Запрос подписи ETH транзакции от MPC сети
async function requestEthSignature(
  nearAccount: Account,
  ethTxPayload: string,      // RLP-encoded unsigned transaction
  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",  // 300 TGas
    attachedDeposit: utils.format.parseNearAmount("0.1"), // оплата MPC
  });
  
  // Результат содержит ECDSA подпись
  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 адрес (производный от NEAR аккаунта)
  const ethAddress = await getEthAddressFromNear(nearAccount, derivationPath);
  
  // 2. Получаем nonce и gas price для Ethereum
  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 сети через 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). Это уникальная возможность: большинство других cross-chain протоколов не поддерживают 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);
  
  // Получаем UTXOs
  const utxos = await fetchUTXOs(btcAddress);
  
  // Строим PSBT
  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 });
  // Change output...
  
  // Для каждого input запрашиваем подпись у MPC
  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);
}

Варианты применения

Omnichein 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 без centralized exchange, с on-chain гарантиями через HTLC (Hash Time-Locked Contracts) + Chain Signatures.

Ограничения и зрелость

Chain Signatures — относительно новый продукт (mainnet запуск 2024). Зрелость инфраструктуры ниже, чем у Axelar или LayerZero. MPC latency: подпись занимает 3-5 секунд (off-chain координация валидаторов). Стоимость: каждый 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)

Сроки

  • NEAR аккаунт + Chain Signatures базовый флоу: 2-3 недели
  • Ethereum интеграция (транзакции + ERC-20): +1-2 недели
  • Bitcoin поддержка: +2-3 недели
  • Полноценный omnichain dApp: 2-3 месяца