NOTE: Don't use in a production environment at the current stage. The plugin needs to create outputs in IOTA's UTXO Ledger and thus requires access to an address with funds. In this PoC the used Mnemonic seed phrase is just stored in a
.env
file and not yet a suitable key management solution.
The INX Notarizer Plugin is a custom extension for IOTA Hornet Nodes using the IOTA Node Extension (INX) interface. It provides functionalities related to the notarization of data on the IOTA UTXO Ledger, allowing users to notarize and verify hashes of documents or any arbitrary data, ensuring their integrity without the need for a centralized authority.
- Health Check: A simple endpoint to check the health and responsiveness of the plugin.
- Notarization: Create a transaction including a hash of your document or data, effectively notarizing it in a Basic Output of the IOTA UTXO Ledger.
- Verification: Verify the notarization of a document or data by checking its hash against the stored Basic Output.
The plugin exposes three main RESTful endpoints:
- Endpoint:
http://{your-node-address}:14265/api/notarizer/v1/health
- Method:
GET
- Description: Checks the health of the plugin. Useful for monitoring and operational purposes.
- Response: HTTP 200 OK if the plugin is up and running.
- Endpoint:
http://{your-node-address}:14265/api/notarizer/v1/create/:hash
- Method:
POST
- Description: Notarizes a hash by creating a transaction that creates a Basic Output which includes the hash in its metadata field. The hash should be passed as a parameter in the URL.
- URL Parameter:
hash
- The hash of the document or data to be notarized. - Response: JSON object containing the
blockId
of the created transaction.
{
"blockId": "0x123abc..."
}
- Endpoint:
http://{your-node-address}:14265/api/notarizer/v1/verify
- Method:
GET
- Description: Verifies the notarization of a hash by searching the Basic Output that includes the hash in its metadata field.
- Query Parameters:
hash
: The hash of the document or data to verify.outputID
: The output ID of the Basic Output where the hash was notarized.
{
"hash": "0xe9cee...",
"outputID": "0x63b2f..."
}
- Response: JSON object indicating whether the hash matches (true or false).
{
"match": true
}
- Ensure you have a running IOTA node with INX enabled.
- Clone the plugin repository to your local machine.
- Follow the setup instructions in the repository to integrate the plugin with your IOTA node.
- Start your IOTA node with the plugin enabled.
The plugin can be configured through environment variables or a configuration file. Please refer to the .env_sample
file for an example of the available configuration options.
Contributions to the INX Notarizer Plugin are welcome. Please submit your pull requests to the repository or open an issue if you encounter any problems.
The INX Notarizer Plugin is released under the MIT License. Please see the LICENSE file for more details.
Feel free to adjust the contents according to the actual functionalities, configuration options, and setup instructions of your INX Notarizer Plugin.