Contract-Development

乙太坊智能合約中的私人資訊

  • March 19, 2020

有沒有辦法在智能合約上儲存資訊並保密?

如果合約有一個不公開的狀態變數,例如:

contract foo{
   uint public publicVariable;
   uint notPublic;
}

“notPublic”真的不公開嗎?如果它包含像信用卡#這樣的秘密資訊怎麼辦?那樣可以麼?如果我想在該變數中保留一些絕密資訊,有沒有辦法做到這一點,即使它是鏈上的,也沒有人能得到它?

乙太坊區塊鏈上的一切都是公開的。

因此,您不能掩蓋數據。這是因為每個乙太坊節點都儲存了整個區塊鏈的副本,因此理論上每個節點都可以檢查他們的副本以找到您想要隱藏的任何數據。

這並不意味著您不能將敏感數據放在區塊鏈上,您只需先對其進行加密。

使用公鑰加密數據

如果你想在區塊鏈上儲存敏感的使用者資訊,你應該用他們的公鑰加密數據。只有擁有私鑰的使用者才能解密它。

這看起來像是更多的工作,然後您必須使用更正常的 Web 應用程序,但它實際上是一個好處。如果您假設攻擊者可以訪問您的數據,您將避免許多導致這些巨大數據洩露的安全陷阱。默默無聞的安全根本不是真正的安全!

引用自:https://ethereum.stackexchange.com/questions/2624