В процессе загрузки ресурсов... загрузка...

exchange.IO("кодировать",...)

В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()для кодирования, вам нужно продолжить передачу двух параметров:

    1. Переменные, соответствующие типу тупла:
    
    {
        a: 30,
        b: 20,
        c: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
    }
    
    

    Переданные параметры также должны соответствовать структуре и типуtuple, как определено вtypesпараметр формы:tuple(a uint256,b uint8,c address).

    1. Переменные, соответствующие типу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Для конкретного использования вы можете обратиться к публично доступным платформамUniswap V3 Trade Шаблон- Да. При использовании метода кодирования для поиска смарт-контрактов, в первую очередь необходимо зарегистрировать соответствующий ABI.

обмен.IO (("api", "eth",...) exchange.IO (("encodePacked",...)