Encryption
區塊鏈智能合約 EHR
我正在嘗試使用具有Pacient Contract的Smart Contracts做一個小型EHR(電子健康記錄)。
問題是,在solidity中,一切都是公開的,甚至是私有變數,所以我必須以某種方式加密健康記錄數據,但以其他方式它應該可供其他醫生閱讀我以前的健康記錄並添加一些新數據對於一個特定的Pacient合約,因此醫生需要有一種機制來解密和加密數據,並且Pacient應該能夠看到他的數據。
每個患者都將擁有一個帳戶,並且應該使用該帳戶註冊一個Pacient 契約,他可以在其中使用他的私鑰加密他的所有個人數據。醫生將擁有一個賬戶,以便能夠進行交易(在這種情況下,交易會將一些健康數據寫入 Pacient 智能合約)
我的做法:
- 來自 Pacient 契約的所有醫療數據都將使用 pacient 私鑰加密/加密。
- 當一個病人去看醫生時,他需要提供他的私鑰,以便讓醫生看到他以前的醫療數據,並在他的契約中寫入更多的醫療數據。
這種方法的醜陋之處在於,患者始終需要將他的私鑰提供給醫生,然後醫生可以隨時訪問患者的數據。
是否有其他方法可以將敏感數據保存到公共區塊鏈中,或更優雅的 EHR dApp 解決方案?
在患者的契約中,您可以添加規則,以便誰可以將數據添加到他/她現有的病歷中:
For Example: Patient.sol contract Patient { mapping(address=>doctorStruct[]) public doctorDetails; struct doctorStruct { address doctorAccountAddr; bool canAddData; } }
在這裡,患者可以請求醫生的公鑰(帳戶地址)並將其添加到 Patient.sol 的醫生詳細資訊中,而不是與醫生共享私鑰。接下來,每當醫生要添加數據時,只需確保
doctorDetails[docAddress].canAdd = true
這將是精通 Solidity 智能合約的一個很好的起點: https ://solidity.readthedocs.io/en/v0.5.4/
一旦您獲得了良好的實踐 Solidity,那麼您將能夠在合約級別管理所有內容,而無需加密/解密。(我的看法)
一種選擇是轉移到一個私有的、允許的區塊鏈,但我不確定你想要做什麼。
在您的情況下,我將建構一個處理權限的 dApp。