驚奇!用Java也能實現位元幣系統

2021-08-19 01:28:50 字數 1454 閱讀 8588

位元幣是構建在區塊鏈技術之上的乙個加密數字貨幣,區塊鏈顧名思義即由很多區塊組成的鏈條,可以把區塊鏈簡單比喻為一本賬本,把區塊比喻為賬本的一頁記錄,賬本的每一頁裡都記錄了很多位元幣的轉賬交易,那根據這個賬本裡的所有交易記錄應該是能算出任何乙個交易者的餘額,我們先來構造乙個區塊的結構

public

class block

轉賬交易即位元幣的擁有方之間進行的相互轉賬行為,我們把這些位元幣的擁有方暫時假設為位元幣的錢包,錢包有對應的錢包位址,那這些轉賬交易實際上就是錢包位址之間的轉賬交易(類似於支付寶使用者之間的轉賬,其實就是支付寶使用者名稱之間的轉賬),這些轉賬交易需要被記錄到賬本裡才算真正的生效。

public

class transaction

/**

* 挖礦

* @param blockchain 整個區塊鏈

* @param txs 需記賬交易記錄,包含

* @param address 礦工錢包位址

* @return

*/private static

void mineblock(list blockchain, list txs, string address)

nonce++;

system.out.println("計算錯誤,hash:" + hash);

}//解出難題,可以構造新區塊並加入進區塊鏈裡

block newblock = new block(latestblock.getindex() + 1, system.currenttimemillis(), txs, nonce, latestblock.gethash(), hash);

blockchain.add(newblock);

system.out.println("挖礦後的區塊鏈:" + json.tojsonstring(blockchain));

}

計算某個錢包位址的餘額其實就是從區塊鏈賬本裡找出所有該位址作為接收方的交易記錄,將這些交易記錄的發生金額累加就得到該位址收到的所有位元幣金額了,然後找出所有該位址作為傳送方的交易記錄再次累加則得到該位址傳送出去的所有位元幣金額了,用收到的位元幣金額之和減去傳送出去的位元幣金額之和就得到該位址真正的位元幣餘額了。

/**

* 查詢餘額

* @param blockchain

* @param address

* @return

*/public static int getwalletbalance(listblockchain, string

address)

if (address.equals(transaction.getsender())) }}

return balance;

}

PHP也能實現區塊鏈?

什麼是區塊鏈?官方的解釋是 區塊鏈是乙個分布式記賬系統,是藉用密碼學串接並保護其內容的串連交易記錄 又稱區塊 每乙個區塊包含了前乙個區塊的加密雜湊 對應的時間戳記以及交易資料 通常用默克爾樹演算法計算的雜湊值表示 這樣的設計使得區塊內容具有難以被篡改的特性。用區塊鏈所串接的分布式賬本能讓兩方有效率地...

SSD也能實現分層儲存

2013年可以稱得上是全快閃儲存器陣列的爆發之年,幾乎所有主流的儲存廠商都在今年發布了全快閃儲存器陣列產品。戴爾似乎不慌不忙,直到最近才宣布推出dell compellent storage center 6.4軟體,並通過它支援compellent全快閃儲存器陣列。其實早在4年前,dell equ...

用Excel也能傳送電子郵件

建立親友通訊錄 如圖所示,在工作表中建立乙個包含不同收件人 主題 內容和附件的親友通訊錄。二 使用巨集實現自動傳送電子郵件 sub 全自動傳送郵件 要能正確傳送並需要對microseft outlook進行有效配置 on error resume next dim rowcount,endrowno...