Bloc not registering contract made within contract


#1

When I create a contract from within an already registered contracts function it is not registering on my bloc API.
What am I doing wrong?

**see the following example function from my passport registration contract**

    function createPassport(string  name, uint dateCreated, uint dateExpires,
                            string residentialAddress, uint8 age, string countryOfOrigin) returns (bool) {
        // create pssport
        Passport passport = new Passport(
                name,
                dateCreated,
                dateExpires,
                residentialAddress,
                age,
                countryOfOrigin
            );
    }

After I call that function I can see that the new Passport contract was created in the blockchain, but when I go to view the details on the newly created Passport contract via the bloc API I cannot find it.
Any idea?


#2

@smooth this is expected behavior. Bloc only knows about contracts directly uploaded through the API. In this case, a contract is created as a result of a function invocation (which results in an internal transaction). Bloc is not aware of this contract. It is possible to index these contracts through cirrus. You can do this by compiling the passport contract in the code editor. Then use the Create Contract button on the top right. Check the searchable check box and then click cancel. Cirrus should now index all passport contracts. Please make sure you are using the latest version of the SMD (v0.3.5).


#3

Thanks that worked, they are now registering with cirrus.
My next question is now that they are registering is it won’t allow me to call the functions they are greyed out.
Is there anyway around this?


#4

Yes. That is a limitation right now. You can only call methods for contracts created by Bloc. You are unable to call methods on contracts that are created by internal transactions because Bloc does not have the ABI information for the contract. I have added this request to our feature list.