Blockchain technology is gaining grounds as a disruptive technology and enterprises are exploring ways through which they can incorporate blockchain into their business processes. Incorporating blockchain into the business process can only become feasible through the development of blockchain-based product innovations that offer newer, better and valuable alternatives to current solutions. In effect, more uses cases are needed to drive blockchain adoption. End-users do not care about what technology is behind the applications they use. Rather, they care more about the value it offers them. As a blockchain enthusiast, I am interested in reviewing the business and technical implementation of blockchain projects as a way of making it easier for others to learn and grasp how blockchain projects are implemented. The review of blockchain dapps is one of the ways of driving developer interest in blockchain.
Algorand blockchain network offers the platform for developers to build a borderless economy ecosystem that offers a secure, fast and transparent way to process transactions, store and retrieve data. To learn more about the Algorand blockchain project, architecture and its implementation, read this post. Various blockchain projects have been built on the Algorand chain and these cover different verticals of the economy. In this post, I will do a technical review of one of the Algorand blockchain projects by examining its implementation and how it uses blockchain technology to achieve its aim.
This post is focused on the FlexFinTx dapp (decentralised application), which is a blockchain solution that seeks to provide digital identities for Africans. Citizen Identification in developing countries remains a challenge. Citizens often must carry different forms of identifications, most of which are not recognised by state and para-state institutions both locally and globally. Secondly, verifying identities has border limitation due to lack of trust and validity of the identity source. These problems are at the core of FleFinTx’s mission: Rebuilding identity for millions of Africans.
FlexFinTx is doing this by issuing users with the FlexID’s, which can be used globally. The IDs conform with international standards set for Decentralized Identities. With FlexIDs, people can get identified wherever they go and access essential services by using their digital IDs. The identities are backed on the Algorand blockchain which provides resiliency and cryptographic security. By using Algorand, there is “identify finality” of the user IDS which are stored on the blockchain. This information is public, and retrievable for any purpose and cannot be corrupted.
FlexFinTx’s architecture has on-chain and off-chain layers.
The on-chain layer is developed on the Algorand blockchain. Layer-1, which is the on-chain component, uses the asset transfer feature of Algorand to create a transaction between 2 similar addresses. Algorand transactions offer developer and opportunity to add random text using the noteField parameter. To avoid spamming the Algorand network, FlexFinTx transactions are grouped in batches before they are sent to the Algorand chain as a single transaction. The on-chain architecture is used for the decentralized key-management system, which is the foundation for all decentralized identity systems. Whenever a user identity is verified, the user is issued a public key which is stored and managed on the decentralised Algorand network. Here, only the public keys are saved and not the personal data of its users. Technically, the team is neither creating standard Algorand asset nor using smart contracts for registering the transactions on the chain. Instead, they are using the “note” parameter when creating an Algorand transaction to store the users’ public keys. The user data is string-encoded and this information is attached to the noteField when a transaction is sent. An example is demonstrated below.
from algosdk import algod, mnemonic, account
from algosdk.future import transaction
passphrase = “teach chat health avocado broken avocado trick adapt parade witness damp gift behave harbor maze truth figure below scatter taste slow sustain aspect absorb nuclear”
acl = algod.AlgodClient(“API-TOKEN”, “API-Address”)
# convert passphrase to secret key
sk = mnemonic.to_private_key(passphrase)
# get suggested parameters
sp = acl.suggested_params()
# Set other parameters
amount = 100000
note = “Some Text”.encode()
receiver = “receiver Algorand Address”
# create the transaction
txn = transaction.PaymentTxn(account.address_from_private_key(sk), sp, receiver, amount, note=note)
# sign it
stx = txn.sign(sk)
# send it
txid = acl.send_transaction(stx)
From the transaction code above, the section marked Set other parameters allows any developer to attach any text to the Algorand transaction. In the above code, pay attention to the variable called the receiver. The receiver filed takes the address of the transaction recipient. The sender and receiver addresses do not have to be unique; they can be the same. Instead of sending the transaction to a different address, FlexFinTx sends the transaction to itself. I thought they would create two separate addresses and make one of them the sender and the other the recipient. In Algorand, you can send a transaction to yourself, something which you cannot do on other blockchains. Every time user data is sent to the chain, FlexFinTx simply sends the transaction back to itself thereby allowing it to batch control transactions without creating multiple Algorand account. The notefield information can be decoded anytime by using the code below
# decode notefielddecoded = encoding.msgpack_decode(base64.b64encode(note_field_bytes))print(decoded.dictify())
The encoding type is base64 and up to 1kb of data can be attached to the note field parameter.
FlexFinTx is currently running on the Algorand Testnet. I will take a sample transactional data from their Testnet account to illustrate the above discussion. On the Testnet account, you can see all the transactions happening and how they are handling the note field parameter. See the FlexFinTx Testnet account there: https://testnet.algoexplorer.io/address/7Q6ZUP5GYPIMHGPVNIZJO2BRXHQK3EJA75RU2QC4HMGNY3Q6YYTLF7VFD4
From the link above, you can view a single transaction to have an idea of the note field implementation
From the transaction details above, base64 encoded string is attached to the Note field with a message that is understood by the FlexFinTx Layer-2 architecture.
FlexFinTx Layer-2 Architecture
With Algorand as the backbone, the FlexFinTx dapp has a second layer, which handles the logic and functionality for digital ID creation and validation. The layer-2 architecture is a distributed system since participating institutions run local nodes of the layer-2 system. The layer 2 network is built using the SideTree Protocol, which is suitable for building scalable decentralised public key infrastructure for digital identities. It is blockchain agnostic and the choice of the blockchain platform is a decision for the developers to make. If you need to read more about the SideTree Protocol, visit this post. But, the use of the SideTree protocol makes it easier for the FlexFinTx to issue digital IDs that conform to global standards and are backed up on the Algorand chain. User identity is verified by a trusted issuing authority and signed, cryptographically, to protect them from alteration. After it is signed and issued, it then gives third parties the trust in using data from digital ID keys that the user carries along. I was curious to find out if there was a public-facing endpoint for anyone to integrate but FlexFinTx is focused on sealing important partnerships with Governments, NGO, FinOrgs and other entities that seek to offer digital inclusion to people in remote areas. A public-facing endpoint is part of the plan.
In conclusion, FlexFinTx has built a robust digital identity solution that is hinged on two decentralised layers. Algorand provides the blockchain layer for backup of user data making it tamper-proof while the SideTree Protocol is used to issue digital IDs that are decentralised across different nodes at the issuing authorities. We will keep an eye on the FlexFinTx project and hope to do more technical reviews when it launches on the Mainnet.