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

Способ вызова умного контракта

Следующее содержание является примером некоторых вызовов методов умных контрактов.

  • десятичные числа ВdecimalsМетод являетсяconstantМетодERC20что не генерируетgasС другой стороны, в этом случае можно использоватьtoken- Да. ВdecimalsВ обратном порядке значение: данные точностиtoken.

    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
    }
    
  • пособие ВallowanceМетод являетсяconstantМетодERC20что не генерируетgasПотребление, и он может запросить разрешенное количество определенногоtokenдля определенного контрактного адреса. ВallowanceМетод должен пройти в 2 параметра, первый - это адрес кошелька, а второй - авторизованный адрес.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: Адрес кошелька заменяется строкой owner в примере.spender: Авторизованный адрес контракта заменяется строкой spender в примере.Uniswap V3 router v1.

  • одобряю ВapproveМетод не является...constantМетодERC20что генерируетgasПотребление, которое используется для разрешенияtokenсумма операции до определенного контрактного адреса. ВapproveМетод должен пройти в 2 параметра, первый - это адрес, который должен быть разрешен, а второй - разрешенная сумма.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: адрес уполномоченного контракта, пример заменяется строкой spender, фактическое использование необходимо заполнить конкретный адрес, например, это может бытьUniswap V3 router v1 address. amount: Количество разрешений, представленное здесь с помощью шестой десятичной строки, соответствует десятичному значению1e18, разделенный наtokenточная единица в примере (т.е. 1e18), дающая 1token authorized.

    Третий параметрexchange.IOФункция передается название методаapprove, который также может быть записан в видеmethodId, например: 0x571ac8b0. Также можно написать полное стандартное название метода, например approve(address,uint256) .

  • многократный звонок Вmulticallметод является неконстантным методомUniswap V3, что приведет кgasпотребление и использовать для обмена токенами несколькими способами. ВmulticallУ этого метода может быть несколько способов передачи параметров. Вы можете запросить ABI, содержащий метод, для получения деталей. Вам нужно зарегистрировать ABI перед вызовом метода. Возвращение значения:txid.

    Для конкретных примеровmulticallметоды вызовов, пожалуйста, обратитесь к общественностиUniswap V3 Trading Class Library шаблоннашей платформы.

    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 Uniswap V3s маршрутизатор v2 контракт, он должен быть заполнен в соответствии с фактической ситуацией.contractV3SwapRouterV2: маршрутизатор v2 адрес Uniswap V3, фактическое использование требует конкретный адрес, который должен быть заполнен...value: сумма ETH, перечисленная, установлена на 0, еслиtokenInТокен для обменной операции не ETH, он должен быть заполнен в соответствии с фактической ситуацией.deadline: Он может быть настроен на(new Date().getTime() / 1000) + 3600Это означает, что она действительна в течение часа.data: Данные о предстоящей упаковке должны быть заполнены в соответствии с фактической ситуацией.

    Также можно указатьgasLimit/gasPrice/nonceнастройка вызовов методов:

    exchange.IO("api", contractV3SwapRouterV2, "multicall(uint256,bytes[])", value, deadline, data, {gasPrice: 5000000000, gasLimit: 21000})
    

    Вы можете установить параметр{gasPrice: 5000000000, gasLimit: 21000, nonce: 100}в соответствии с вашими конкретными потребностями, параметр устанавливается на последний параметрexchange.IOФункция. Вы можете пропуститьnonceи использовать системные настройки по умолчанию, или не устанавливатьgasLimit/gasPrice/nonceи использовать все значения системы по умолчанию.

    Следует отметить, что в примере атрибутstateMutabilityвmulticall(uint256,bytes[])метод:payable, иvalueПараметр должен быть передан. АтрибутstateMutability":"payable"может быть просмотрен сABI.exchange.IOфункция будет определять необходимые параметры в соответствии сstateMutabilityатрибут вABIчто было зарегистрировано. ЕслиstateMutabilityатрибут - этоnonpayable, параметрvalueне нужно передавать.

Поддержка переключения частных ключей Другие вызовы функций