Testnet Inter-contract Call Function Public Beta Bounty Rules

Nebulas will carry out a one-month public beta for inter-contract call function on testnet from this week on. Community members are invited to give feedbacks and find bugs on this function. Nebulas team will provide NAS rewards of varying amount to encourage users to actively participate.

The risk rating and rewards are as follows:

High risk (15+NAS): Bugs that may cause asset loss of users.

Middle risk (5~15 NAS): Bugs that may influence system stability.

Low risk (1~5 NAS): Other bugs that pose no threat on users’ asset safety and system stability.

How to feedback:

If you find bugs, please refer to the lists as follows:

https://lists.nebulas.io/cgi-bin/mailman/listinfo

And then send your feedback to Nebulas email group:

testnet-bugs@lists.nebulas.io

Notes:

1. Nebulas tech team will review the feedbacks and have a follow-up evaluation on the reported bugs. The evaluation time will be dependent on the severity of the problems and the difficulty of repair. Nebulas team will send the evaluation result to the corresponding developers by email as soon as possible. 2. When submitting bugs, developers are required to give detailed descriptions on what the bug is and how it happens. Screenshots are preferred. 3. If some developers give the same or similar feedback, then the earliest developer submitting the bug will receive NAS rewards. 4. When the inter-contract call function is online officially, Nebulas team will announce the rewarded developers and send email to the related developers to confirm their personal information before distributing rewards. Community members are welcome to participate in the inter-contract call public beta and give us suggestions. Together let’s build a continuously improving Nebulas ecosystem!

QA

On August 16, Nebulas team released the instruction of inter-contract call function, which has been long expecting. Some community members raised questions as well as suggestions on this function. Below gives the answers of those questions.

Q1: If smart contract A calls smart contract B, is there a way for smart contract B to get the address of the smart contract that is executing the call (smart contract A in this example)? I’m assuming in both contracts Blockchain.transaction.from would point to the original wallet address. Could a new Blockchain.* variable be introduced that would contain the smart contract address that executed the inter-contract call?

A1: When contract A calls method in contract B, the “Blockchain.from” is actually the address of contract A. If you wanna get the caller’s address of contract A in contract B, you may want to pass the address as a parameter to contract B.

Q2. Why is 3 the limit?

A2: In our original design, we anticipated that 3 level calls can meet the requirements of most real world applications. Moreover, based on our testing result, as we increase the level of calls, the memory usage and gas consumption will increase dramatically, performance will also be affected. If the community has requirement to get rid of the limitation, our team will be working on improving that.

We also updated it in our wiki, learn more.

Q3. Are those inter-contract calls currently tracked and evaluated in preparation for NR or will they in a later stage? And also, would it be possible to do these kind of inter-contract calls with an entirely different blockchain — like Ethereum to exchange data decentralized at a later stage?

A3： For now, we did not track the tx for the purpose of calculating NR, but it’s in our roadmap.

As for inter-chain data exchange, honestly we do not have plan for it yet. However, it will be an interesting direction we may have a try down the road, also before that, we may need to do some investigation.

Q4. Will the inter-contract calls be viewable on the explorer anywhere?

A4： That’s definitely a good point. For now, we cannot view the inter-contract calls on explorer, however, we’re actually working on it, so stay tuned.