- Developer Doe wants to deploy an DApp on RChain that uses a different coin as the basis for transactions on his application. He would like to have different signatures from those offered natively on RChain. He chooses a cryptographic function from the Rholang documentation and authors his smart contract.
2. Developer Smith has a Java application that returns some interesting data that he wants to expose to the blockchain via a Rholang contract. He installs the Jar file on his RChain node and then runs a command to 'Add Oracle' , which returns back a channel name. He applies the channel name in his Rholang contract and observes that his contract can now expose and use the data from his Java application.
The work for the FFI is captured in:
Describe the issues which need to be addressed or resolved before attempting to devise a complete design.
- Do we implement a 'path' parameter that needs to be set?
- Economics of exposing a jar file to Rholang. Michael Stay (Unlicensed)
- If the economics of Oracles cannot be figured out, we will not support Oracles in the Mercury time frame.
Describe how the software will interface with other software components.
- It will expose the Cryptography primitives to Rholang via a system channel – > Michael Stay (Unlicensed) - we need to begin specifying what the system powerbox contracts are in detail.
- It will expose FFI objects to the system powerbox in some fashion (needs to be specified)
The FFI will take a function out of the jar and then wrap it in a process that is waiting for input, passes it along, computes it and then sends it along to a channel. The jar file will be exposed via the Java class loader.
- The FFI will need a location on the system where it reads Jar files from. Installation / deployment of upgraded RChain software should not impact this directory - therefore the directory should exist outside of the RChain folder. See Design considerations.
Describe how the software will interface with physical systems, ex: ports for communication, which devices are to be supported and any hardware protocols used.
Will software be used in creating the system? If so, indicate what software (name and version), how it is to be used, and any details about how it interfaces with the software being specified.
What is the user interface for the software? How will users interact with the software? List out all the aspects involved in making the UI better for all users that will interact or support the software.