After months of hard work to get our core technology to a state where it is ready for prime time, we finally announced on the 16th of May at the London Ethereum Meetup the public version (Beta v0.95) of the Ambrosus Network (AMB-NET), and as of today the code of our Hermes nodes has been open-sourced (here’s the GitHub repo — please fork, try, comment, and send us ideas & pull requests! Bounties available for the best contributions!). For now, only our test network is made publicly accessible. We also have deployed our very own Hermes node that you can use to build any app you can think of and test it for free (literally!)

As you know, AMB-NET is an enterprise data storage system that provides a unified and scalable infrastructure to safely store and share supply chain data between actors that may not trust each other. At the heart of our solution we leverage the Blockchain technology to ensure that all data is stored in a secure and immutable manner. As we announced in our recent cryptoeconomics post, AMB-NET is powered by multiple types of masternodes owned and operated by different entities (enterprises, governments, trade bodies, and soon any whitelisted community member).

Overall architecture of AMB-NET

The central entity in AMB-NET are Hermes nodes which provide a REST API that allows any mobile/desktop applications (and devices!) to interact with the Ambrosus Blockchain and record/read real-time supply chain data simply through HTTP. REST APIs are particularly interesting in our context as they enable simple and quick integration with any sort of legacy system and tradition enterprise systems using bridges — which has been a vital capability required by our enterprise customers.

Read our Beta 0.95 API Documentation.

The Ambrosus Data Model (ADM)

The data model at the heart of Ambrosus is very simple, uniform and lightweight — and is generic enough to individually model and record various types of data about any individual asset in a supply chain throughout its lifecycle. Our data model is composed simply of two main types of entities: Assets and Events.

For each entity in your supply chain that you want to track, you create a corresponding Asset in AMB-NET. Then you can create many Events linked to those Assets— this is how data is recorded and stored in Ambrosus.

An ASSET in Ambrosus is the digital representation of any unique physical or logical entity in a supply chain that needs to be individually identified and tracked over it. Think of it like a document folder (or “file”) that acts as placeholder for all the information you gather about anything in your supply chain. It can be a 40ft container, a pallet filled with cartons of milk, a truck, a 6-pack of beer, a box of aspirin, a batch of hot wings sauce, an shipment to a customer, or an individual bottle of wine — or any other thing you fancy. In short, if something needs to have a (globally) unique ID — then you can create an asset in AMB-NET for it.

An EVENT is any timestamped piece of information that needs to be recorded about one (or several) assets — those are the different documents you can store in the asset file, for example who packed it, where it was made, when it was put on a truck. All events have the following informations: when (timestamp), where (location), who (user/device that observed the event), what (the asset or assets this event applies to) is generally recorded, but you can add a lot more data in events. A good example is for example a tiny sensor sending a signed (and/or even encrypted) set of readings from its sensors.

All assets are automatically public, but they only contain an asset ID, the ID of which account created it, and a timestamp of when it was created (so pretty much zero sensitive information, here’s a real example). All “actual” information about assets is recorded only via the events appended to it (such as the name, weight, chemical composition, brand, etc.). The interesting and innovative bit is that each event can have individual access control information: some events will be public (e.g. when a product was packaged and where), other events will be private (purely internal data that no one has access to, e.g. when and how much of a raw ingredient arrived from which supplier), finally many events will be semi-private (private, but accessible by designated users only — eg. the recipient of a shipment).

Public data can be read by anyone freely without an account simply via a REST API call to any gateway (for example, see all the events this steak has been through). However, to create Assets/Events or to read any non-public data you’ll need an ACCOUNT, which is essentially a private key. We have also released a tool to create an account yourself. You can also use the faucet to request test network tokens (you can get 100 tokens per day — which should be enough to create quite a few thousands of assets/events).

The Ambrosus Blockchain

The Beta 0.95 version of the Ambrosus network is based on a permissioned Ethereum network using the Proof of Authority (POA) consensus mechanism. Currently, we are giving public access to our Test Network (on an “best effort & as is” basis), while the Main network is being deployed and tested with our clients and partners internally. We are aiming to have the main network live by the end of Q3.

The way it works is that client apps (Perseus) send requests (JSON document sent over HTTPS) to any Hermes node to create assets and events. Hermes node receive the JSON document and generate a hash of it, which is then used to generate a globally unique ID for that entity (the AMB-ID). The hash and the AMB-ID are then packaged into a bundle which will get included into a block by the validator nodes (so everyone will be able to prove when asset with ID 123 was created and by which account, and the hash of the data it had). The actual data is persisted inside the data storage options configured in the gateway that created it (by default, a local MongoDB database — but as the source code is open, other options ranging from Swarm, IPFS, S3, etc. can be integrated). Parts of the data can then be shared and synchronised between nodes and shared with any other account. To access the data, you simply send a request (HTTP GET) to any Hermes node that has it, and if your account has the permission to see it, you’ll have access to the data.

Summary

AMB-NET v0.95 is now Live — and you can as of today build apps on it!

So let’s summarize how AMB-NET works: for each unique thing you’d like to track in your supply chain (every batch, pallet, carton, etc.), you create a corresponding Asset in Ambrosus. You can then link Assets with each other to create a complex graph of relationships (Box #21 belongs to Batch #18 and was packed in Carton #70, etc.). Then, various actors (apps, devices, IT systems) create Events on these Assets over time as they travel throughout the supply chain to record what happens to the assets - when and where - with any additional information you want to add. Finally, you can write client applications (native or Web) and integrations that pull data about assets/events from AMB-NET and display it for the end-consumer or other users.

We’re committed to open-source code as we mentioned on many occasions and as our technology stack matures, we’ll be continuously releasing more an more code, SDKs and app examples. We welcome contributions, feedback, and ideas from our community! Don’t hesitate to reach out if you have any question, simply per email: tech@ambrosus.com, or via our other channels! Keep in mind we’re a rapidly growing and globally distributed team and if what you see is exciting and you’d like to get seriously involved, reach out — we always have extra room for strong and motivated developers (front-end, full-stack, blockchain engineers, QA, DevOps and product managers are key position we’re keen to fill in the next few weeks!)