Вexchange.IO("encode", ...)
функция вызвана для кодирования данных.
Вexchange.IO("encode", ...)
функция возвращает закодированные данные.
строка
exchange.IO(k, dataFormat,...args)exchange.IO(k, адрес, формат данных)exchange.IO(k, адрес, данныеФормат,...args)
Вk
Параметр используется для установки функцииexchange.IO()
функция, установленная на"encode"
означает, что функция используется для кодирования данных.
k
неправда
строка
Вaddress
Параметр используется для установки адреса смарт-контракта.exchange.IO("encode", ...)
Функция, проходящая вaddress
Параметр указывает на кодирование метода вызова на умный контракт.exchange.IO("encode", ...)
функции, еслиaddress
параметр не передается, функция используется для кодирования указанного порядка типа и функционально эквивалентнаabi.encode
вSolidity
- Да.
Адрес
ложное
строка
ВdataFormat
Параметр используется для указания метода, типа и порядка кодируемых данных.
DataFormat (Формат данных)
Истинно
строка
Вarg
Параметр используется для указания значения конкретных данных, соответствующегоdataFormat
параметр. может быть более одногоarg
параметр, а также тип и количествоarg
параметров зависит отdataFormat
параметры.
арг
ложное
строка, число, тупл, массив и все другие типы, поддерживаемые системой
function main() {
// Main network address of ContractV3SwapRouterV2: 0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45
// Calling the unwrapWETH9 method requires registering the ABI first, which is omitted here
// "owner" represents the wallet address, which need to fill in the specific, 1 represents the number of unpacking, unpacking a WETH into ETH
var data = exchange.IO("encode", "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45", "unwrapWETH9(uint256,address)", 1, "owner")
Log(data)
}
Например, вызов метода кодированияunwrapWETH9
:
function main() {
var x = 10
var address = "0x02a5fBb259d20A3Ad2Fdf9CCADeF86F6C1c1Ccc9"
var str = "Hello World"
var array = [1, 2, 3]
var ret = exchange.IO("encode", "uint256,address,string,uint256[]", x, address, str, array) // uint i.e. uint256 , the type length needs to be specified on FMZ
Log("ret:", ret)
/*
000000000000000000000000000000000000000000000000000000000000000a // x
00000000000000000000000002a5fbb259d20a3ad2fdf9ccadef86f6c1c1ccc9 // address
0000000000000000000000000000000000000000000000000000000000000080 // Offset of str
00000000000000000000000000000000000000000000000000000000000000c0 // Offset of array
000000000000000000000000000000000000000000000000000000000000000b // The length of str
48656c6c6f20576f726c64000000000000000000000000000000000000000000 // str data
0000000000000000000000000000000000000000000000000000000000000003 // The length of the array
0000000000000000000000000000000000000000000000000000000000000001 // array the first data
0000000000000000000000000000000000000000000000000000000000000002 // array the second data
0000000000000000000000000000000000000000000000000000000000000003 // array the third data
*/
}
Это эквивалентно примеру кодированияabi.encode
вSolidity
:
function main() {
var types = "tuple(a uint256,b uint8,c address),bytes"
var ret = exchange.IO("encode", types, {
a: 30,
b: 20,
c: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
}, "0011")
Log("encode: ", ret)
}
Он поддерживает кодирование тупла или порядка типа, содержащего тупла.
Этот тип порядка состоит из:tuple
, bytes
, так что когда звонишьexchange.IO()
для кодирования, вам нужно продолжить передачу двух параметров:
{
a: 30,
b: 20,
c: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
}
Переданные параметры также должны соответствовать структуре и типуtuple
, как определено вtypes
параметр формы:tuple(a uint256,b uint8,c address)
.
bytes
:"0011"
function main() {
var path = ["0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", "0xdac17f958d2ee523a2206206994597c13d831ec7"] // ETH address, USDT address
var ret = exchange.IO("encode", "address[]", path)
Log("encode: ", ret)
}
Он поддерживает последовательное кодирование массивов или типов, содержащих массивы:
Вexchange.IO()
Функция включает в себяencode
метод, который может вернуть код вызова функцииhex
Для конкретного использования вы можете обратиться к публично доступным платформам