Nội dung sau đây là một ví dụ về một số cuộc gọi phương thức hợp đồng thông minh.
số thập phân
Cácdecimals
phương pháp là mộtconstant
phương phápERC20
mà không tạo ragas
tiêu thụ, và nó có thể truy vấn dữ liệu chính xác của mộttoken
.
Cácdecimals
Phản hồi giá trị: dữ liệu chính xác củatoken
.
function main(){
var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302" // The contract address of the token, in the example the token is 1INCH
Log(exchange.IO("api", tokenAddress, "decimals")) // Query, print 1INCH tokens with precision index of 18
}
trợ cấp
Cácallowance
phương pháp là mộtconstant
phương phápERC20
mà không tạo ragas
tiêu thụ, và nó có thể truy vấn số lượng được phép của một sốtoken
cho một địa chỉ hợp đồng nhất định.
Cácallowance
Phương pháp cần phải đi qua trong 2 tham số, một là địa chỉ ví, và một thứ hai là địa chỉ được ủy quyền.token
.
function main(){
// The contract address of the token, in the example the token is 1INCH
var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302"
var owner = ""
var spender = ""
// For example, the query yields 1000000000000000000, divided by the precision unit of the token 1e18, the current exchange object bound to the wallet to the spender address authorized 1 1INCH.
Log(exchange.IO("api", tokenAddress, "allowance", owner, spender))
}
owner
: Địa chỉ ví được thay thế bằng chuỗi spender
: Địa chỉ hợp đồng được ủy quyền được thay thế bằng chuỗi Uniswap V3 router v1
.
chấp thuận
Cácapprove
Phương pháp này không phải là...constant
phương phápERC20
tạo ragas
tiêu thụ, được sử dụng để cho phép mộttoken
số tiền giao dịch đến một địa chỉ hợp đồng nhất định.
Cácapprove
phương pháp cần phải vượt qua trong 2 tham số, một là địa chỉ được ủy quyền và thứ hai là số tiền được ủy quyền.txid
.
function main(){
// The contract address of the token, in the example the token is 1INCH
var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302"
var spender = ""
var amount = "0xde0b6b3a7640000"
// The hexadecimal string of the authorization amount: 0xde0b6b3a7640000 , the corresponding decimal string: 1e18 , 1e18 divided by the precision unit of the token, i.e. 1 token amount, so this refers to the authorization of one token.
Log(exchange.IO("api", tokenAddress, "approve", spender, amount))
}
spender
: Địa chỉ của hợp đồng được ủy quyền, ví dụ được thay thế bằng chuỗi Uniswap V3 router v1
address.
amount
: Số lượng ủy quyền, được thể hiện ở đây bằng một chuỗi hexadecimal, tương ứng với một giá trị thập phân của1e18
, chia chotoken
đơn vị chính xác trong ví dụ (tức là 1e18), tạo ra 1token
authorized.
Các tham số thứ ba củaexchange.IO
hàm được truyền tên phương thứcapprove
, cũng có thể được viết dưới dạngmethodId
, ví dụ:
nhiều cuộc gọi
Cácmulticall
phương pháp là một phương pháp không liên tục củaUniswap V3
, sẽ tạo ragas
tiêu thụ và được sử dụng để trao đổi token theo nhiều cách.
Cácmulticall
method có thể có nhiều phương thức truyền tham số. Bạn có thể truy vấn ABI chứa phương thức để biết chi tiết. Bạn cần đăng ký ABI trước khi gọi phương thức. Trả về giá trị:txid
.
Đối với các ví dụ cụ thể vềmulticall
phương pháp gọi, xin vui lòng tham khảo công chúng
function main() {
var ABI_Route = ""
var contractV3SwapRouterV2 = ""
var value = 0
var deadline = (new Date().getTime() / 1000) + 3600
var data = ""
exchange.IO("abi", contractV3SwapRouterV2, ABI_Route)
exchange.IO("api", contractV3SwapRouterV2, "multicall(uint256,bytes[])", value, deadline, data)
}
ABI_Route
: ABI của Uniswap V3contractV3SwapRouterV2
: địa chỉ router v2 của Uniswap V3, việc sử dụng thực tế đòi hỏi một địa chỉ cụ thể phải được điền vào...value
: Số tiền ETH được chuyển giao, đặt nó thành 0 nếutokenIn
token cho giao dịch trao đổi không phải là ETH, nó cần phải được điền vào theo tình hình thực tế.deadline
: Nó có thể được thiết lập thành(new Date().getTime() / 1000) + 3600
, có nghĩa là nó có hiệu lực trong một giờ.data
: Dữ liệu về hoạt động đóng gói cần thực hiện, nó cần phải được điền theo tình hình thực tế.
Nó cũng có thể xác địnhgasLimit/gasPrice/nonce
thiết lập cho các cuộc gọi phương thức:
exchange.IO("api", contractV3SwapRouterV2, "multicall(uint256,bytes[])", value, deadline, data, {gasPrice: 5000000000, gasLimit: 21000})
Bạn có thể đặt tham số{gasPrice: 5000000000, gasLimit: 21000, nonce: 100}
theo nhu cầu cụ thể của bạn, các tham số được thiết lập cho các tham số cuối cùng củaexchange.IO
chức năng.
Bạn có thể bỏ quanonce
và sử dụng hệ thống mặc định, hoặc không đặtgasLimit/gasPrice/nonce
và sử dụng tất cả các giá trị mặc định của hệ thống.
Cần lưu ý rằng trong ví dụ, thuộc tính củastateMutability
trongmulticall(uint256,bytes[])
phương pháp làpayable
, vàvalue
Parameter cần được truyền vào.
Thuộc tính củastateMutability":"payable"
có thể được xem từABI
.exchange.IO
chức năng sẽ xác định các thông số cần thiết theostateMutability
thuộc tính trongABI
đã được đăng ký.
NếustateMutability
thuộc tính lànonpayable
, tham sốvalue
không cần phải được chuyển vào.