⛓️블록체인 기술

POW+POS 혼합 합의 메커니즘

POW 합의 메커니즘: 작업 증명

작업 증명은 복잡한 문제를 해결하는 과정을 포함하며, 이는 특정한 계산 능력을 투입한 작업이 이루어졌음을 보여준다. 문제가 해결되면, 블록체인의 다른 멤버들이 그 해결책을 심각하게 검토한다. 계산 문제를 처음 해결한 사람은 계산 결과를 블록체인에 제출하여, 답이 일치하는지 확인한다. 답이 일치하면, 새로운 거래가 포함된 새로운 블록으로부터 문제 해결 과정이 시작된다. 이제 해결된 블록은 다른 사람들이 다음 블록에 참조를 포함함으로써 확인된다.

POS 합의 메커니즘: 지분 증명

이 방법에서는, 문제의 난이도가 개인이 투입한 암호화폐의 양에 따라 달라지며, 계산 능력을 사용하여 블록을 검증하는 권리를 얻는 대신에 적용된다. 이는 로또 구매와 다소 유사하다: 더 많이 구매할수록 이길 확률이 높아진다. 하지만 차이점은, 이기지 않더라도 당신의 내기를 잃지 않는다는 것이며, 비록 일정 시간 동안 잠겨있을 수는 있지만, 자신이 가진 대량의 토큰을 가진 사람은 불안정한 네트워크가 자신의 토큰을 가치 없게 만들 수 있기 때문에, 네트워크의 신뢰성을 유지하는데 관심이 있다. 따라서 그들은 유효한 거래만을 확인할 것이다. PoS의 일부 버전에서는, 네트워크의 다른 부분이 당신의 블록을 확인하지 않는 경우, 실제로 당신의 스테이크(토큰)을 잃게 된다.

TBC는 POW+POS 혼합 합의 메커니즘을 채택하여, 그 분배 메커니즘이 고전적이며, 플레이어의 작업 증명과 자산 소유자의 지분 증명을 완벽하게 맞춘다. 작업 증명(PoW)으로 새로운 블록을 생성한 후, 블록 생성자는 60%의 보상을 받고, 이후 POS 합의의 투표 단계로 들어가, 홀더가 자유롭게 참여하여 시스템에서 배분한 30%의 보상을 받을 수 있으며, 나머지 10%는 커뮤니티 펀드로 들어가 커뮤니티가 사용하기로 한다.

이 혼합된 합의 방법은 모든 마이너(작업 증명 지지자)와 토큰 홀더(지분 증명 지지자)에게 블록을 승리할 평등한 기회를 제공한다. 마이너는 작업량을 늘림으로써 블록을 승리할 기회를 높일 수 있고, 토큰 홀더는 더 많은 토큰을 보유함으로써 그들의 기회를 높일 수 있다. 각 그룹은 50%의 승리 확률을 가진다.

스마트 계약 설계

스마트 계약은 특별한 형태의 계약으로, 계약의 제공, 검증 및 실행을 목적으로 하며, 제3자 없이 추적 가능하고, 불가역적이며, 안전한 거래를 실행할 수 있게 한다. 스마트 계약은 거래와 관련된 모든 정보를 포함하고 있으며, 요구 사항이 충족되었을 때만 결과 작업을 실행한다. 스마트 계약과 전통적인 종이 계약의 차이점은 스마트 계약이 컴퓨터에 의해 생성된다는 점이다. 따라서, 코드 자체가 관련 당사자의 의무를 설명한다. 사실상, 스마트 계약의 참여자들은 종종 인터넷 상의 낯선 사람들이며, 구속력 있는 디지털 프로토콜에 의해 제한된다. 본질적으로, 스마트 계약은 디지털 계약으로, 요구 사항이 충족되지 않으면 결과가 발생하지 않는다.

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;
}

/** * 권한 부여 후 결제 시작
*/ @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 플랫폼은 스마트 계약을 그 핵심 로직으로 사용하는데, 이는 블록체인 상에서 실행되는 컴퓨터 프로그램이며, 사전에 정의된 규칙과 조건에 따라 자동으로 실행된다. 스마트 계약은 다양한 응용 프로그램에 사용될 수 있으며, 블록체인에 배포된 후에는 예정된 비즈니스 로직을 자동으로 실행하고 데이터를 관리할 수 있다.

TBC 스마트 계약 로직은 다음과 같은 부분을 포함합니다:

  • 프론트엔드 사용자 인터페이스 (프론트엔드 로직): 프론트엔드 로직은 사용자가 TBC 플랫폼과 상호 작용하는 부분으로, 사용자의 입력을 처리하고 사용자의 행동에 응답하며 스마트 계약과 상호 작용합니다. 프론트엔드 로직은 일반적으로 사용자 인터페이스(웹 페이지나 모바일 앱 등)와 사용자 상호 작용 로직(입력 검증, 사용자 상태 관리 등)을 포함합니다.

  • 스마트 계약 설계: 스마트 계약은 TBC 플랫폼의 핵심 부분으로, 계약 로직을 실행하고 블록체인 네트워크 상의 다른 스마트 계약과 상호 작용합니다. Solidity와 같은 블록체인 프로그래밍 언어로 작성되며, 이러한 언어는 블록체인 네트워크의 특성에 맞게 설계되었습니다.

  • 블록체인 네트워크 상호 작용: TBC 플랫폼의 계약 로직은 데이터를 얻기, 거래를 보내기 및 다른 스마트 계약을 호출하기 위해 블록체인 네트워크와 상호 작용해야 합니다. 이는 블록체인 네트워크의 API와 상호 작용하는 것을 포함합니다.

  • 데이터 저장: TBC 플랫폼의 계약 로직은 블록체인 상의 데이터, 예를 들어 상태 변수, 이벤트 등에 액세스해야 합니다. 이는 블록체인 데이터 저장 솔루션을 사용하는 것을 포함합니다.

  • 확장성 및 보안: TBC 플랫폼이 탈중앙화된 환경에서 운영되어야 하기 때문에, 확장성과 보안 측면에서의 균형을 맞춰야 합니다. 이는 분산 시스템 설계, 합의 알고리즘, 암호학 등의 기술을 사용하는 것을 포함할 수 있습니다.

TBC의 스마트 계약은 탈중앙화되어 있으며 중앙 집중식의 중앙 통제 기관이 없습니다. 네트워크에 분포된 여러 노드에 의해 공동으로 유지 관리되므로 매우 투명하고 공정하며 민주적인 시스템입니다.

데이터 암호화

거래 플랫폼의 가장 핵심적인 요구 사항은 데이터 저장, 관리 및 거래의 안전을 보장하는 것입니다. TBC는 강력한 기술 팀에 의존하여 기본 구조에서 시작하여 소프트웨어와 하드웨어를 결합한 방식으로 금융 등급의 데이터 보안 암호화 솔루션을 구축하여 모든 체인 상의 데이터의 안전을 보장합니다. 컴퓨터 세계에서, 모든 소프트웨어에는 취약점이 있으며, 단순히 소프트웨어로 저장 안전을 보호하는 것은 믿을 수 없습니다. 우리는 소프트웨어와 하드웨어의 결합을 통해 금융 등급의 안전 조치로 해커로부터 분리됩니다.

맞춤형 CPU: 가장 기본적인 컴퓨터 하드웨어에서 시작하여

독립적으로 설계된 전용 명령 세트를 갖추고 있어, 호스트에서 실행되는 프로그램은 우리가 만든 컴파일러로 컴파일해야만 실행할 수 있습니다. 해커가 일반 컴파일러로 컴파일한 프로그램은 실행할 수 없어, 모든 가능한 침입 행위를 근본적으로 차단합니다.

금융 등급 암호화기: 고급 키 관리 기술

주로 호스트 애플리케이션 레이어 데이터의 암호화 및 복호화, 메시지 출처의 정확성 검증, 키 관리 등을 수행하는데 사용되며, 금융 데이터 보안 보호 수준의 효과적인 물리적 도구입니다. 완벽한 키 관리 시스템을 갖추고 있으며, 특징은 다음과 같습니다: 전체 하드웨어 노이즈 소스에서 생성된 진정한 무작위 키를 제공합니다(다른 거래소가 제공하는 것은 모두 의사 무작위 키입니다); 통신 채널에서의 활동적 공격 행위를 효과적으로 방지합니다; 물리적 방식으로 민감한 정보를 읽을 수 없는 정보로 만듭니다; 하드웨어 칩이 해체될 때 자기 파괴 기능을 갖추고 있습니다; FIPS 140-2 Level3 국제 표준을 준수하여 높은 안전성을 갖추고 있습니다.

전용 U 쉴드: 다중 안전 보장

전용 U 쉴드는 암호화기와 같은 장치와 물리적으로 분리되어 사용자의 핵심 정보와 개인 키를 보호합니다. 하드웨어 칩이 분해될 때 자기 파괴 기능을 갖추고 있으며, 사용자의 안전 장치 없이는 하드웨어를 훔쳐도 칩에서 개인 키를 얻을 수 없어 사용자 자산의 안전을 보장하고 가능한 내부자 범죄를 차단합니다.

Last updated