> For the complete documentation index, see [llms.txt](https://tourbillion.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://tourbillion.gitbook.io/docs/chinese/ji-shu-jia-gou/qu-kuai-lian-ji-shu.md).

# 区块链技术

<figure><img src="/files/iLHrFvNpFgSDD4VSCLlo" alt=""><figcaption></figcaption></figure>

## POW+POS混合共识机制

### POW共识机制：工作量证明

工作量证明涉及解决一个复杂的难题，其中包括你想要包含在区块中的交易，以表明你已经在工作中投入了一定的算力。当一个难题解决后，区块链上的其他成员会认真检查该解决方案。第一个解决计算难题的人会将计算结果提交给区块链，以确定答案是否匹配。如果答案确实相同，则解决难题的过程将从具有新交易的新区块开始。现在解决的区块由其他人通过在下一个区块中包括（对它的引用）来确认。

### POS共识机制：权益证明

在这种方法中，一个人需要解决的难题的难度取决于他投入了多少加密货币，而不是通过使用算力获得验证区块的权利。这与买彩票有些类似：买得越多，赢的机会就越大。但有一点不同的是：如果你不赢，你不会输掉你的赌注，尽管它可能会被锁定一段时间。在这种情况下，拥有大量代币的人有兴趣保持区块链网络的可靠性，因为一个不可靠的网络会使他们的代币变得一文不值。因此他们只会确认有效的交易。在某些版本的PoS中，如果网络的其它部分不确认你的区块，实际上你会丢失你的筹码（代币）。

TBC采用POW+POS混合共识机制，它的分配机制堪称经典，十分符合玩家的工作量证明以及资产所有者的权益证明。通过工作量证明（PoW）产生新区块后，出块者获得60%的奖励，随后进入POS共识的投票阶段，允许Holder自由参与投票并获得系统分配的30%奖励，剩余10%进入社区金库，由社区决定使用。

这种混合的共识方法为所有矿工（工作量证明法支持者）和代币持有人（权益证明法支持者）提供了赢得区块的平等机会。矿工可以通过增加工作量来提升赢得区块的机会，代币持有者也可以通过持有更多代币来增加他们（赢得区块）的机会。 每个群体都有50％的机会获胜。

### 智能合约设计

<figure><img src="/files/W2bjhi3X3sFfr4imJl3B" alt=""><figcaption></figcaption></figure>

智能合约是一种特殊协议，旨在提供、验证及执行合约，它允许我们在不需要第三方的情况下，执行可追溯、不可逆转和安全的交易。智能合约包含了有关交易的所有信息，只有在满足要求后才会执行结果操作。智能合约和传统纸质合约的区别在于智能合约是由计算机生成的。因此，代码本身解释了参与方的相关义务。事实上，智能合约的参与方通常是互联网上的陌生人，受制于有约束力的数字化协议。本质上，智能合约是一个数字合约，除非满足要求，否则不会产生结果。

TBC链游聚合发射生态平台采用智能合约自动执行，它的合约网络与各使用场景的授权开源如下所示：

```
客户端授权*/ @Override
@Transactional

public TokenDto clientAuth(String username, String token, Game game)
{ Long gameId = game.getId();

if (!cacheService.match(CacheNames.CLIENT_TOKEN, username + gameId.toString(), token)) {
throwBadRequest(NO_AUTH);
}

DomainUser user = userService.findByName(username, true); gameLogonRepository.offLine(user.getId(), gameId); GameLogon logon = new GameLogon(); logon.setUserId(user.getId()); logon.setAccountId(user.getAccounts().iterator().next().getId()); logon.setGameId(gameId);
logon.setToken(DomainUtils.l币咚合约hars(username, 4) + DomainUtils.firstChars(token, 6));
logon.setCreateTime(new Date()); logon.setUpdateTime(logon.getCreateTime()); gameLogonRepository.save(logon);
TokenDto detail = new TokenDto(); detail.setUsername(username); detail.setToken(logon.getToken()); return detail;
}

/** * Initiate Payment after Authorization
*/ @Override
@Transactional
public TransResult createTrans(UserBrief user, Long gameId, TransDto request) {

Map<String, Account> accs = accountService.findAccountsIn(ImmutableList.of(request.getUsername(), request.getTo()));

Account from = accs.get(request.getUsername());

BigDecimal quantity = DomainUtils.typedMulti(request.getQuantity(), CoinType.GCN); if (from.getAmount().compareTo(quantity) < 0) throwBadRequest(LOW_AVAILABLE);
GameLogon fgl = gameLogonRepository.findByGameIdAndAccountIdAndTokenAndLogin(gameId, from.getId(), request.getToken(), true);

AccountTransaction trans = new AccountTransaction(); trans.setTransactionType(TransactionType.P2P);
if (DomainUtils.isNull(fgl)) {
if (!request.getUsername().equalsIgnoreCase(user.getUsername())) { logger.error(String.format("game#%d#trans#%s fail from#%s", gameId,
request.getTransNum(), request.getUsername()));
throwBadRequest(NO_PAYMENT_AUTH);

}
trans.setUserId(user.getId());

trans.setTransactionType(TransactionType.V2P); } else {
gameLogonRepository.outcome(fgl.getId(), quantity); trans.setUserId(fgl.getUserId());
}

Account to = accs.get(request.getTo()); GameLogon tgl =
gameLogonRepository.findByGameIdAndAccountIdAndTokenAndLogin(gameId, to.getId(), request.getToToken(), true);
if (DomainUtils.isNull(tgl)) {
if (!request.getTo().equalsIgnoreCase(user.getUsername())) { logger.error(String.format("game#%d#trans#%s fail to#%s", gameId,
request.getTransNum(), request.getTo()));
throwBadRequest(NO_PAYMENT_AUTH);
}
trans.setToUserId(user.getId());

trans.setTransactionType(TransactionType.P2V); repository.income(gameId, quantity);
} else {

gameLogonRepository.income(tgl.getId(), quantity); trans.setToUserId(tgl.getUserId()); repository.trade(gameId, quantity);
}
trans.setPreAmount(from.getAmount());
trans.setToPreAmount(to.getAmount()); trans.setQuantity(quantity); trans.setTransNum(request.getTransNum()); trans.setMemo(request.getMemo()); accountService.saveTransaction(trans);
logger.info(String.format("%d, from %s,%d, to %s", from.getId(), from.getAmount(), to.getId(), to.getAmount()));
accountService.outcome(from.getId(), quantity); accountService.income(to.getId(), quantity);
TransResult tr = new TransResult(from.getAmount().subtract(quantity), to.getAmount().add(quantity));

logger.info(String.format("%d, from %s,%d, to %s", from.getId(), tr.getAmount().toString(), to.getId(), tr.getToAmount().toString()));

return tr;

```

TBC平台使用智能合约作为其核心逻辑,，它是一种在区块链上运行的计算机程序，并根据预定义的规则和条件自动执行。智能合约可以用于许多应用场当智能合约被部署到区块链上后，可以自动执行预设的业务逻辑，并对数据进行管理。

<figure><img src="/files/G3iorpcGmL9Mj32gfYCz" alt=""><figcaption></figcaption></figure>

### TBC智能合约逻辑包括以下部分：

* **前端用户界面（前端逻辑）：**&#x524D;端逻辑是用户与TBC平台进行交互的部分，它处理用户的输入、响应用户的行为并与智能合约进行交互。前端逻辑通常包括用户界面（如网页或移动应用）和用户交互逻辑（如输入验证、用户状态管理等）。
* **智能合约设计：**&#x667A;能合约是TBC平台的核心部分，它执行合约逻辑并与区块链网络上的其他智能合约进行交互，使用Solidity等区块链编程语言编写的，这些语言是为了适应区块链网络的特性而设计的。
* **区块链网络交互：**&#x54;BC平台的合约逻辑需要与区块链网络进行交互，以获取数据、发送交易和调用其他智能合约，涉及到与区块链网络的API进行交互。
* **数据存储：**&#x54;BC平台的合约逻辑需要访问区块链上的数据，如状态变量、事件等，这涉及到使用区块链数据存储解决方案。。
* **可扩展性和安全性：**&#x7531;于TBC平台需要在去中心化的环境中运行，它们需要在可扩展性和安全性方面进行权衡。这可能包括使用分布式系统设计、共识算法和密码学等技术。

TBC的智能合约是去中心化的，没有集中式的中央控制机构。它是由分布在网络中的多个节点共同维护和管理的，因此，它是一个非常透明、公平和民主的系统。

### 数据加密

交易平台最核心的要求是确保数据存储、管理及交易的安全。TBC依托强大的技术团队，从底层布局，采用软硬件结合的方式，打造金融级数据安全加密解决方案，确保所有链上数据的的安全。计算机世界里，凡是软件都有漏洞，单靠软件保护存储安全是不可靠的。我们将采用软件和硬件结合的方式，以金融级安全措施隔绝黑客。

### 定制 CPU：从最底层计算机硬件开始布局

独立设计专用指令集，因此主机里运行的程序必须是使用我们自创的编译器编译方可运行，黑客使用通用编译器编译的程序无法运行，从根本上杜绝一切可能存在的入侵行为。

### &#x20;金融级密码机：先进密钥管理技术

主要用于实现对主机应用层数据加解密、消息来源正确性验证、密钥管理等，是金融数据安全保护级别的一种有效物理工具，具有完善的密钥管理体系，其特点：能提供由全硬件噪声源产生的真随机密钥（其它交易所提供的均为伪随机密钥）；能有效防止通信信道上的主动攻击行为；以物理方式封闭敏感信息使其变为不可读信息；硬件芯片在遭遇拆解时具有自我销毁功能；符合 FIPS 140-2 Level3 国际标准，具有高安全性。

### 专用U盾：多重安全保障

专用 U 盾与密码机等设备实现物理隔离用户核心信息和私钥， 硬件芯片在拆解时均具有自我销毁功能，没有用户的安全设备，即使窃取硬件也无法从芯片中获得私钥，从而确保用户资产安全，杜绝可能的监守自盗。
