Summary
Further Details
Response to additional question about checksum
The security features refers to the checksum on the address. Before the checksum feature was introduced, addresses like 0x6c8f2a135f6ed072de4503bd7c4999a1a17f824b
were all lowercase. I entered this address in etherchain.org and copied the equivalent checksummed address which is 0x6C8f2A135f6ed072DE4503Bd7C4999a1a17F824B
. Both versions should work in the Ethereum Wallet.
Here is the blank screen in Ethereum Wallet 0.7.2
A bug report has been lodged.
![enter image description here](https://i.stack.imgur.com/evidk.png)
Here is the working screen in Ethereum Wallet 0.6.2
A similar screen is also displayed in 0.5.1
![enter image description here](https://i.stack.imgur.com/zyKAm.png)
You may want to try 0.6.2, and check the network
You might want to try downloading the old 0.6.2 version of Ethereum Wallet and see if you can load the contract in your screen. The issue you are encountering may be a bug in the new version.
And check that you are using the Main network (menu Develop -> Network).
While submitting the bug report, I when through the recommended steps to check. One of these steps was to load the console (menu Develop -> Toggle Developer Tools -> Wallet UI). The 0.7.2 console showed the message Error: CONNECTION ERROR: Couldn't connect to node on IPC. (...)
.
Take a look at the code generated by the wrappers
Function name()
for a ERC20
public RemoteCall<String> name() {
final Function function = new Function(FUNC_NAME,
Arrays.<Type>asList(),
Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
return executeRemoteCallSingleValueReturn(function, String.class);
}
And transferFrom()
for ERC20
public RemoteCall<TransactionReceipt> transferFrom(String _from, String _to, BigInteger _value) {
final Function function = new Function(
FUNC_TRANSFERFROM,
Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(_from),
new org.web3j.abi.datatypes.Address(_to),
new org.web3j.abi.datatypes.generated.Uint256(_value)),
Collections.<TypeReference<?>>emptyList());
return executeRemoteCallTransaction(function);
}
When called it will execute a function executeRemoteCallXXXXX(function)
.
To construct a dynamic class you have to construct function
which you pass the name of the function to invoke, a list with input parameters and a list with output parameters. See here https://github.com/web3j/web3j/blob/a0ece8b8fb76397c24592cc9d59578cdabbf751c/abi/src/main/java/org/web3j/abi/datatypes/Function.java#L17-L22.
public Function(String name, List<Type> inputParameters,
List<TypeReference<?>> outputParameters) {
this.name = name;
this.inputParameters = inputParameters;
this.outputParameters = convert(outputParameters);
}
Best Answer
EDIT: This answer explains why you cannot list and view the source code of all contracts. The answer by @Xeenych is how to count the total number of contracts.
Some blockchain explorers show some contracts: example with ABI and source code, and example without source (filter out the "value transfers").
The blockchain only has EVM bytecode. Generally, you need the source code of the contract to get the ABI, or the contract author has to provide it to you. See Do I need a compiled contract just to get the ABI definition?