Deployed on https://amino-chain-backend.herokuapp.com
called by protocol owner with body:
interface BiobankRegistrationData {
hla: HLA,
biobankAddress: string,
donorAddress: string,
amounts: number[],
signature: string,
genome: string
}
amounts
-- array of donation fractions in CC. Example: [10, 5, 5, 2, 2, 2, 2, 2] or [30]
signature
-- donor should sign message to prove identity. Check example below
genome
-- full genome and donor info
HLA and genome data encrypted by src/encryptor.ts
tool. Genome data uploads to IPFS by uploadGenomeToIpfs
function.
To prevent biobank fraud we need to have signature of made by donor wallet. Signature made WalletConnect library, sample code:
const authenticator = new Contract(
contractAddress,
abis.authenticator,
new ethers.providers.JsonRpcProvider('https://rpc-mumbai.matic.today')
)
let hlaHash = ethers.utils.id(JSON.stringify(hla))
const registrationParametersHash = await authenticator.getRegistrationHash(donorAddress, hlaHash)
connector // from WalletConnect
.signMessage([account, registrationParametersHash])
.then(async (signature) => {
const response = await fetch(platformBackend + `register-donation`, {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
hla,
biobankAddress,
donorAddress,
amounts,
signature,
genome,
}),
})
})
Full code in UI repo components/biobank/appointments/register/donorApprovePage/DonorApprovePage.jsx
Returns txHash
called by marketplace UI. HLA decrypted by src/encryptor.ts
tool. Returns raw HLA data:
interface HLA {
A: number[]
B: number[]
C: number[]
DPB: number[]
DRB: number[]
}
called by marketplace UI. Genome decrypted by src/encryptor.ts
tool. Returns raw genome/donor data as string
called by AminoChainMarketplace smart contract, returns json:
{ doctor: true|false }
Run yarn update-build
to update build
folder
Admin suite https://dashboard.heroku.com/apps/amino-chain-backend