Создать двухканальное приложение
Пошаговое руководство по двухканальному приложению — один контракт Solidity, используемый как пользователем MetaMask, так и пользователем Phantom (Solana), с точным описанием того, что происходит на каждом шаге.
Что вы пишете — стандартное хранилище ERC-20
interface IERC20 {
function transfer(address to, uint256 amount) external returns (bool);
function transferFrom(address from, address to, uint256 amount) external returns (bool);
}
contract Vault {
IERC20 public immutable token; // обёртка wUSDC
mapping(address => uint256) public balanceOf;
constructor(IERC20 _token) { token = _token; }
function deposit(uint256 amount) external {
require(token.transferFrom(msg.sender, address(this), amount));
balanceOf[msg.sender] += amount;
}
function withdraw(uint256 amount) external {
balanceOf[msg.sender] -= amount;
require(token.transfer(msg.sender, amount));
}
}Два канала
Канал
Кошелёк
Как приложение вызывает это
Ключевая идея: синтетический адрес — это транзитный узел
Один раз: Активировать (подготовить синтетический адрес)
Что нужно каждой стороне
Нужно
Почему
Входящая стоимость — депозит (шаг за шагом)
Исходящая стоимость — вывод (шаг за шагом)
Подводные камни — всё это обрабатывает SDK
То же приложение из MetaMask
Что дальше
Последнее обновление
Это было полезно?