'What is causing my Solidity calls to suddenly return default values?
WEB3: What is causing my Solidity calls to suddenly return default values instead of the true results returned earlier (for example, a Contract Address call now returns '0x')
const stakeDAO_json = require('./componentsFolder/stakeDAO.json')
const TruffleContract = require('truffle-contract')
const Web3 = require('web3')
Web3.providers.HttpProvider.prototype.sendAsync = Web3.providers.HttpProvider.prototype.send
const web3 = new Web3('http://127.0.0.1:7545')
const account = '0x784a56F281D665f2b9ab680D3C2569acEE46607C' const account2 = '0xAA7B5037A4d9451233a746d96F96E3Fb04b70E1D'
var value = 100000000000000000
const contractAddress = '0xE5FaCD4e6d34794f8B4887ffc88B4154C4543764'
const ranFunc = async () =\> {
const StakeDAO = TruffleContract(stakeDAO_json)
StakeDAO.setProvider(web3.currentProvider)` `const stakeDAO = await StakeDAO.deployed()` `const ownerAddress = await stakeDAO.ownerAddress()
console.log(ownerAddress)
}
ranFunc()` `let App1 = {
loadContract: async () =\> {
const StakeDAO = TruffleContract(stakeDAO_json)
StakeDAO.setProvider(web3.currentProvider)` `const stakeDAO = await StakeDAO.deployed()` `return stakeDAO
},` `load: async () =\> {
await App1.ownerAddress()` `await App1.contractAddress()` `await App1.tokenType()` `await App1.name()` `await App1.symbol()` `await App1.decimals()` `await App1.totalSupply()
},` `ownerAddress: async () =\> {
const StakeDAO = TruffleContract(stakeDAO_json)` `StakeDAO.setProvider(web3.currentProvider)` `const stakeDAO = await StakeDAO.deployed()` `const ownerAddress = await stakeDAO.ownerAddress()` `console.log(ownerAddress)` `return (ownerAddress)
},
contractAddress: async () =\> {
const StakeDAO = TruffleContract(stakeDAO_json)` `StakeDAO.setProvider(web3.currentProvider)` `const stakeDAO = await StakeDAO.deployed()` `const contractAddress = await stakeDAO.contractAddress()` `return (contractAddress)
},` `tokenType: async () =\> {
const StakeDAO = TruffleContract(stakeDAO_json)` `StakeDAO.setProvider(web3.currentProvider)` `const stakeDAO = await StakeDAO.deployed()` `const tokenType = await stakeDAO.tokenType()` `return (tokenType)
},` `name: async () =\> {
const contractName = await App1.loadContract()` `const name = await contractName.name()` `return (name)
},` `symbol: async () =\> {
const \_symbol = await App1.loadContract()` `const symbol = await \_symbol.symbol()` `return symbol
},` `decimals: async () =\> {
const \_decimals = await App1.loadContract()` `const decimals = await \_decimals.decimals()` `return decimals
},` `totalSupply: async () =\> {
const \_totalSupply = await App1.loadContract()` `const totalSupply = await \_totalSupply.totalSupply()` `return totalSupply
},` `balanceOf: async (accountAddress) =\> {
const \_balanceOf = await App1.loadContract()` `const balanceOf = await \_balanceOf.balanceOf(accountAddress)` `console.log(balanceOf.toNumber()/ 1E+18)` `return balanceOf
},` `transfer: async (to, \_value) =\> {
const \_transfer = await App1.loadContract()` `const transfer = await \_transfer.transfer(
to,
\_value,
{
from: account,
gas: 6000000
}
)` `console.log(transfer)` `return transfer
},` `transferFrom: async (from, to, \_value) =\> {
const \_transferFrom = await App1.loadContract()` `const transferFrom = await \_transferFrom.transferFrom(
from,
to,
\_value,
{
from: account,
gas: 6000000
}
)` `console.log(transferFrom)` `return transferFrom
},` `approve: async (to, \_value) =\> {
const \_approve = await App1.loadContract()` `const approve = await \_approve.approve(
to,
\_value,
{
from: account,
gas: 6000000
}
)` `console.log(approve)` `return approve
},` `allowance: async (from, to) =\> {
const \_allowance = await App1.loadContract()` `const allowance = await \_allowance.allowance(
from,
to,
{
from: account,
gas: 6000000
}
)` `console.log(allowance.toNumber()/ 1E+18)` `return allowance
}
}
App1.symbol().then((result) =\> {console.log(result)})
I did this above using JavaScript, for example, on calling the function 'ranFunc()', it was supposed to console log (i.e. display) the contract Address which is this - ''0xE5FaCD4e6d34794f8B4887ffc88B4154C4543764''. Then the call of App1.symbol() was supposed to return 'STK' as the created token Symbol.
Tools used: Ganache, Truffle, Web3.js, Nodejs
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
