Стандарт формата QR-кода для транзакций в блокчейне
Я пытаюсь создать генератор QR-кода, который будет генерировать данные транзакций для некоторых распространенных блокчейнов и кошельков.
Существует некоторая путаница в отношении формата для разных блокчейнов, но, по крайней мере, для основных блокчейнов — похоже, он определяется как:
ethereum:0xb794f5ea0ba39494ce839613fffba74279579268?amount=1.123
дляETH
(или BTC) и
ethereum:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/transfer?address=0xb794f5ea0ba39494ce839613fffba74279579268&uint256=111.123e6
для EVM-совместимых монет (например,USDC
здесь).
источник: https://eips.ethereum.org/EIPS/eip-681
однако... BNB, похоже, не следует этому формату. Я пробовал следующее:
binance:0xba5830175b16e5e48d94c6fa11041ff9ed3bae5a?amount=1.123
bnb:0xba5830175b16e5e48d94c6fa11041ff9ed3bae5a?amount=1.123
binance:0xba5830175b16e5e48d94c6fa11041ff9ed3bae5a?amount=1.123&memo=1234
и:
оба приложения Binance и Exodus не понимают ничего из вышеперечисленного (даже eth или btc) — я был бы признателен за ссылки на их спецификации требований к коду qr.
Trust Wallet не принимает адрес BNB, написанный таким образом (как ни странно — сумма и заметка работают без нареканий — то же самое здесь, ссылки на документы были бы потрясающими
метамаска (которая совместима со смарт-цепью Binance) не понимает ни одну из опций BNB — то же самое здесь
Честно говоря, я потратил часы на изучение этой темы и просто поражен отсутствием документации по этому вопросу.
в качестве бонуса, просто для информирования других - XRP имеет свой собственный сверхсложный формат QR-кода, и он доступен в виде пакета здесь: https://www.npmjs.com/package/ripple-address-codec .
в любом случае. Любая помощь будет оценена! ваше здоровье
1 ответ
Для блокчейнов EVM, таких как BinanceSmartChain, ответ находится в предоставленной вами документации. Вам необходимо использовать идентификатор ChainId (56 для основной сети BinanceSmartChain), вы можете проверить его на https://chainlist.org/.
Итак, пример строки может быть
Эфириум:0xb794f5ea0ba39494ce839613fffba74279579268@56?amount=1
(имя, которое может вызвать некоторую путаницу, по-прежнему Эфириум)
этот URL запрашивает 10^-18 BNB для адреса 0xb794f5ea0ba39494ce839613fffba74279579268
Следует отметить, что сумма в такой строке предполагается целым числом, поскольку она кратна наименьшей единице, вашему примеру.
Ethereum: 0xb794f5ea0ba39494ce839613fffba74279579268?amount=1,123
неверно, это может быть Ethereum:0xb794f5ea0ba39494ce839613fffba74279579268?amount=1123, запрашивается 1123 wei, iguals до 1.123e-15 ETH
Если я могу помочь чем-то еще, не стесняйтесь спрашивать