EthWorks / ethereum.rb

Ethereum library for the Ruby language
MIT License
731 stars 229 forks source link

Get token contract on Kovan #67

Closed Ununuk closed 6 years ago

Ununuk commented 6 years ago

I took all data from: https://kovan.etherscan.io/address/0x6ff6c0ff1d68b964901f986d4c9fa3ac68346570#code and i want to get contract and do some transactions, but i can't do anything: contract_name = "ZRXToken" contract_address = '0x6Ff6C0Ff1d68b964901F986d4C9FA3ac68346570' abi = [{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_spender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Approval","type":"event"}]

Ethereum::Contract.create(name: contract_name, address: contract_address, abi: abi).call.total_supply I run parity like this: parity --chain kovan

I have always undefined method 'total_supply'

Operations on my smartcontract on eth work. What am i doing wrong?

Ununuk commented 6 years ago

Ethereum::Contract.create(name: contract_name, address: contract_address, abi: abi.to_json) resolved problem.

ToJen commented 6 years ago

Looks like your method is actually named totalSupply and not total_supply. In any case, how do you call your totalSupply function now? For some reason, I'm unable to do @contract.transact.myMethod()

Ununuk commented 6 years ago

Everything works for me. It's total_supply. Please create new issue or explain more if your problem is connected.

ToJen commented 6 years ago

@Ununuk i have a blockchain_controller.rb file:

class BlockchainController < ApplicationController
    skip_before_action :verify_authenticity_token

    # @client = Ethereum::IpcClient.new
    @client = Ethereum::HttpClient.new('https://ropsten.infura.io/api_key')
    PATH = "#{Dir.pwd}/contracts/CharityMerchantUser.sol"

    def create
        # @client.default_account = "my_addr"
        @contract = Ethereum::Contract.create(file:PATH, address:"contract_addr", client:@client)
        key = Eth::Key.new
        @contract.sender = key #"my_addr"
        @contract.deploy_and_wait
        ## render html: address ##
        render json: @contract.abi #json: client.eth_gas_price
    end

    def instantiateOfferToMerchant
        merchant_address = "0x0"
        charity_address = "0x0"
        @contract.transact.userInitiatesOfferToMerchant(20, merchant_address, charity_address)
    end

    def acceptOffer
        @contract.transact.acceptOfferFromUser(1)
    end

end

# Ethereum::Singleton.setup { |c| c.default_account = "0x1234567890123456789012345678901234567890" }

I keep getting this error: undefined method 'default_account' for nil:NilClass for the line that does create.

Ununuk commented 6 years ago

Sorry it's not connected to my issue. Please add new issue for better range.