E-Wills is the next generation of Will notarization, verification & discovery powered by a smart contract on the Concordium blockchain.
Note: check out branches task 1 | 2 for more details on setup requirements, also recommended watch Concordium's in-depth how to.
- Git v2.32.0^
- Nodejs v16.17.0^
- npm 9.2.0^
- Concordium Browser Wallet
Optional
- Rustup 1.25.2
- wasm32
- Cargo
- Concrodium-client
Third party SDK's are need to excel the user experance and allow for a smooth notarization process to take place.
-
Docsign : Enables the capability of remote document signing.
-
Zoom : Enables face to face video chat for remote notarization.
Will encryption is a complex problem to solve do to the senstive of the contents. The most suitable solution is to use proofs Id from the identity as means of encryption. In turn would allow the e-will to be decrypted during the revoke anonymity process.
As of now the discovery of a e-will is untested this is do to how the revoke anonymity process works and the ability to simulate. A solution is to treat each e-will as a NFT. Allowing e-will's to be treated as a respected asset.
Improving site themes and the over all user experience. This can be done by hiring content creators on Fiverr bring design, animation and themes.
Terminology
Testator : A person who has made a will.
Notary : A impartial witness to the signing of a legal document.
Witness : A individual who personally knows the signer and can vouch for the signer's identity to the Notary.
The testator starts the process by calling the smart contract mint
method taking in three arguments; will url, hash of the will & the notary address. Values are saved within the contract state and mapped to the testator address, representing ownership. The will file is then encoded and upload to IPFS. A testator can keep minting will's but only a single will can be the active will. The active will is the latest will that was notorized. This allows for an immutable digital history of wills.
Trustator grants permission to a notary to allow the notarization of the E-Will. After the notary witnesses the remote 'Will' notarization. The notary will confirm the E-Will By calling the notarize
method in the smart contract. The notarize
method takes in three arguments; will url, hash of the will & witness address. The smart contract will verify the inputs and create an Eseal
. Eseal
is a blockchain-based verification and fraud protection process that assures the authenticity of a document and validation. The Eseal can be verified at any time.
The discovery of a E-Will relies heavily on a feature only known to the Concordium Block called revoking anonymity
. Where an identity of a user can only be revealed to a qualified authority as part of a valid legal process. A qualified authority is a governmental body that has authority to act in a relevant jurisdiction. In such cases of an deceased relative, a judge would need to graint a court order to reveal the identity of the decease. This discloses ownership of a E-Will, that would be presented to the court showing authenticity and validation. Additionally the judge could reveal identitys of the notary and witness.
Quick start & Dapp Walk Through video
Open your terminal and git clone the repo.
git clone https://github.com/MitchTODO/E-Wills.git
cd
into the repo directory
cd E-Wills
This section is optional as the dapp uses a predeployed E-Wills contract on the Concordium testnet. Please defer to the quick start video for how this process is done.
cd
into the demo directory
cd demo-v2
Install npm
packages, wait until complete.
npm install
Start the live-server with the following command.
Note: You will need a browser open as it will be used to view the dapp.
npm start
You should be present with the following within your brower.
Within the dapp press the connect wallet button. You will then to confirm the connection of your wallet address.
Once connected the dapp checks if the user has any existing e-wills. If so, contents of the E-will's are then requested and presented. Otherwise the user is presented with the will creation view.
Note: You will need testnet tokens in order to write to the smart contract.
Minting takes in three inputs.
Will File Url
: The digital storage location of the 'will'.
For this demo I use a mock 'will' text file uploaded to the Github repo and set to be the default url within the dapp.
Will Hash
: SHA-256 Hash of the 'will' file.
The file hash is generated by pressing the Get
button. This requests the file and hashes the contents.
Notary Address
: Address authorized to notarize the 'will'.
Notary address must be different from the sender address. Therefor create and use another address within the wallet.
In order for the 'will' in be succeussfully notorized we must switch to the address that was given authorization. Once are notary address is connected to the dapp we can continue to the notary view by toggling the notary view button. Presented with an input view we then paste the address of the 'will' owner. As each will is mapped to the address who created it.
Notarization takes in one input parameter from the notary and additional parameters are passed into the contract method during transaction initialization (will hash & will id).
-
Witness
: Address of the Identity who witness the notarization. -
Will Hash
: Current SHA-256 hash of the 'will' file. -
Will Id
: Integer also repsents amount of wills. -
testator
: Address of the owner of the E-Will being notarized.
Once the transaction finishes we can refesh the E-Will and find that it has been successfully notortized and Esealed.
An idenitiy can own mutplie e-wills but can only hold one active will. This allows for record keeping on past e-wills for courts. The active will is that latest will to be notarized and esealed.
The project is available under Apache licence