Cácexchange.IO("encode", ...)
hàm được gọi cho mã hóa dữ liệu.
Cácexchange.IO("encode", ...)
hàm trả về dữ liệu được mã hóa.
chuỗi
exchange.IO(k, dataFormat,...args)exchange.IO(k, địa chỉ, định dạng dữ liệu)exchange.IO(k, địa chỉ, dataFormat,...args)
Cáck
tham số được sử dụng để thiết lập chức năng củaexchange.IO()
chức năng, được thiết lập thành"encode"
có nghĩa là hàm được sử dụng để mã hóa dữ liệu.
k
đúng
chuỗi
Cácaddress
Các tham số được sử dụng để thiết lập địa chỉ của hợp đồng thông minh.exchange.IO("encode", ...)
chức năng, đi qua trongaddress
tham số chỉ ra mã hóa phương thức gọi trên hợp đồng thông minh.exchange.IO("encode", ...)
chức năng, nếuaddress
tham số không được truyền, chức năng được sử dụng để mã hóa thứ tự loại được chỉ định và tương đương về chức năng vớiabi.encode
trongSolidity
.
địa chỉ
sai
chuỗi
CácdataFormat
tham số được sử dụng để xác định phương pháp, loại và thứ tự của dữ liệu được mã hóa.
dataFormat
đúng
chuỗi
Cácarg
tham số được sử dụng để chỉ định giá trị dữ liệu cụ thể phù hợp vớidataFormat
có thể có nhiều hơn mộtarg
tham số, và loại và số lượngarg
các thông số phụ thuộc vàodataFormat
cài đặt tham số.
arg
sai
chuỗi, số, tuple, mảng, và tất cả các loại khác được hỗ trợ bởi hệ thống
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)
}
Ví dụ, gọi phương thức mã hóaunwrapWETH9
:
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
*/
}
Nó tương đương với ví dụ mã hóa củaabi.encode
trongSolidity
:
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)
}
Nó hỗ trợ mã hóa một tuple hoặc một thứ tự loại chứa một tuple.
Lệnh kiểu này bao gồm:tuple
, bytes
Vì vậy khi gọiexchange.IO()
để mã hóa, bạn cần tiếp tục truyền hai tham số:
{
a: 30,
b: 20,
c: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
}
Các thông số được truyền phải phù hợp với cấu trúc và loạituple
, như được định nghĩa trongtypes
tham số của biểu mẫu: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)
}
Nó hỗ trợ mã hóa thứ tự của mảng hoặc các loại chứa mảng:
Cácexchange.IO()
chức năng bao gồm cácencode
phương pháp, mà có thể trả lại mã gọi chức năng đểhex
Đối với việc sử dụng cụ thể, bạn có thể tham khảo các nền tảng