信任作为金融业的核心,为了维护信任,传统金融业的发展催生了大量成本高、效率低、故障点单一的中介机构,包括托管、第三方支付平台、公证人、银行、交易所等。而区块链具有去中心化、信息透明度高、抗恶意篡改、数据可追溯等特点。让参与者在无需相互认知和建立信任关系的前提下,通过一个统一的账本系统确保资金和信息安全。
区块链的分布式记账、P2P网络架构、基于机器算法的协商一致的自治协议、安全的数据储存传输使用规则、可持续运行的激励机制、开放式的系统来最大程度的去中心化,确保这个系统对任何用户都是“中性”和“可信”的, 从而为交易各方的经济活动建立信任环境,这对金融机构来说意义非凡。
传统的金融交易清算周期长和成本高昂,引入区块链技术,能够加快传统金融交易中心化的交易缓慢和低效的后端运作,并且重塑交易和结算流程。一个共享的数字公开账本能够持续被维护,确认所有参与链上的交易,防止欺诈,对全球金融交易、清算和结算带来了一个重大的改观机会。
class Block {
var index: Int = 0
var dateCreated: String
var previousHash: String!
var hash: String!
var nonce: Int
var data: String
var key: String {
get {
return String(self.index) + self.dateCreated + self.previousHash + self.data + String(self.nonce)
}
}
init(data: String) {
self.dateCreated = Date().toString()
self.nonce = 0
self.data = data
}
}
class Blockchain {
private (set) var blocks = [Block]()
init(_ genesisBlock: Block) {
addBlock(genesisBlock)
}
func addBlock(_ block: Block) {
if blocks.isEmpty {
// 添加创世区块
// 第一个区块没有 previous hash
block.previousHash = "0"
block.hash = generateHash(for: block)
} else {
let previousBlock = getPreviousBlock()
block.previousHash = previousBlock.hash
block.index = blocks.count
block.hash = generateHash(for: block)
}
blocks.append(block)
displayBlock(block)
}
private func getPreviousBlock() -> Block {
return blocks[blocks.count - 1]
}
private func displayBlock(_ block: Block) {
print("------ 第 \(block.index) 个区块 --------")
print("创建日期:\(block.dateCreated)")
print("数据:\(block.data)")
print("Nonce:\(block.nonce)")
print("前一个区块的哈希值:\(block.previousHash!)")
print("哈希值:\(block.hash!)")
}
private func generateHash(for block: Block) -> String {
var hash = block.key.sha1Hash()
while !hash.hasPrefix("00") {
block.nonce += 1
hash = block.key.sha1Hash()
}
return hash
}
}