對稱加密是一把密鑰可以加密,且解密也是依靠這把密鑰。
非對稱加密是會有一對公鑰私鑰,私鑰可以將資訊加密,而公鑰則可以將私鑰加密的資訊進行解密。
Hash是透過將文字生成固定長度的字節串,過程是不可逆的,不同內容生成不同字節,碰撞性低。
在區塊鏈我們會有一個私鑰,私鑰會用ECDSA(非對稱加密)生成公鑰,公鑰在Hash生成出錢包地址,過程是不可逆的。
橢圓曲線中的特性,曲線上兩點相加會等於過兩點直線與曲線相交第三點並以X軸的對稱點。
而若是兩點相同G,則以過G點切線與曲線相交並以X軸的對稱點。因此可以得出:
給定起始點G(G和K是曲線上一點),Z可以是任意整數,可以將Z轉化為二進制,再藉由橢圓曲線的加法及乘法公式就可以得出K點,因此有G點和Z可以得出K點,反之如果只有G點和K點則較難得出Z,只能用窮舉法反推得出。根據此特性可以將Z當作私鑰,K當作公鑰。此算法為ECDSA(橢圓曲線數字簽名算法),而公鑰會再Hash得出地址。
當要執行一筆交易的時候,會先將執行交易的內容進行Hash,再將Hash值進行私鑰加密,也是通稱簽名,接著將交易的資訊和公鑰以及加密後的資訊廣播出去,接著驗證節點將會進行驗證,將交易資訊Hash得到Hash值,然後用公鑰將加密資訊解密得到Hash值,將兩者比對,如果相同則表示正確,如過程交易內容被竄改,則第一個Hash得到的值將會與第二個公鑰解密的值不同,因此就可以確保交易的正確性。
每次生成新的塊時都會以最長的鍊為主,以保證資料的正確性,如有人想要竄改其中一個區塊中的交易,則會產生出新的區塊,分岔出新的鍊,這時如果想要繼續以這條鍊為主則需要追趕上最長的那條鍊,這表示需要擁有50%以上的節點的控制權,幾乎是不可能辦到的,因此此原則能確保資料不被竄改。