The SiegeGuard project was the MVP for a MultiParty Authentication (MPA) service by 5th Dimensional Security (5DS).
Designed to provide a secure way of handling authentication involving multiple parties, SiegeGuard was aimed at applications where multiple entities need to authenticate actions or transactions collaboratively. An MPA can be particularly useful in scenarios requiring high security and verification, such as in financial services, legal agreements, or collaborative platforms.
Bourne from the paper Blockchain Properties for Near-Planetary, Interplanetary, and Metaplanetary Space Domains published in the peer reviewed journal American Institute of Aeronautics and Astronautics.
An Australian registered privately held business ABN 61 638 987 283
Specialising on a real-time internal Authorisation Service to help organisations validate suspicious, irreversible, or otherwise high- stakes actions before network actors can successfully execute them.
Despite letters of intent, we were unable to secure mutually agreeable terms with a suitable primary investor.
The decision to wrap up 5DS was taken slight before the backend was feature complete, the tasks that remained.
.demo
files (RESTful endpoints for Agent, Challenge and Policy) to use the solidity
project instead of hardcoded demo values.Although SiegeGuard was designed for any EVM compatible chain, the expected network was a private PoA chain between interested parties e.g. 5DS, Auditors, armed forces, large corps. The motivation for a private network over the mainnet Ethereum or a side chain was partially a decision of it's time (before L2 really came to prominence), but primarily due to the target customer bases.
Typed ECMAScript that is transpiled to Javascript, relying on the following dependencies:
GitLab CI/CI implemented in the various YAML files (.gitlab-ci.yml
), that triggered build, test, coverage and publishing on pushes to main
.
Client side (programmer's side, prior to creating the GitLab PR) used:
Written with 0.8.3
version of the Solidity programming language (most recent version at the time).
Besides the hand-rolled typed bindings, that were tested with unit and integration tests on locally deployed contract (on a private network), the Solidity was checked locally using Slither
Initially, I chose to use solc
over leading frameworks like Hardhat or Truffle because of the low number of contracts involved. Additionally, based on prior experience,
I had grievances with Truffle's opinionated approach and lacked confidence in Hardhat beyond running a test node.
Initial AWS deployment was of Docker containers, with the intention being to migrate to Kubernetes for production scalability.
API Blueprint provides a concise yet expressive language to define APIs, which was used to generate API documentation to share with investors during the later implementation and design conversation with their technical experts.
Services are interaction points for either the end user or system manager, while the shared libraries provide code reuse for those services.
challenge-response-server
: Accepts and evaluates the Agent's reply to a challenge.api-server
: RESTful server for managing that state of the Organization, Policies, Agents and Challenges.agent-console-server
: Provides access to any pending challenge requests by Organization.contract-deploy-server
: Deploys the EVM bytecode to a compatible chain.common-server
: shared exception, middleware, container and route setup.solidity
: Solidity contracts, with their strictly typed bindings, error handling, listeners and Web3 connection code.oracle-server
: WebSocket EVM chain listener for logging challenge events.rest-server-template
: framework to copy and paste to begin a new HTTP server that includes EVM related connection configuration.eslint-configuration
: EsLint configuration used by all folders with server
in their titlenyc-configuration
: NYC configuration used by all folders with server
in their titlepreitter-configuration
: Prettier configuration used by all folders with server
in their titletypescript-configuration
: TypeScript configuration used by all folders with server
in their titleThe single commit of SiegeGuard is due to the project being developed in GitLab (hence the GitLab CI/CI files) and after wrapping up 5DS, I received permission to open source my efforts.
A temporary NPM user handled used to publish the services as part of CI/CD toolchain, removed after project wrap up.
The source files imported from the @just_another_developer
space are all contained locally.