Tencent Cloud 블록체인 서비스 플랫폼(TBaaS) 장안 체인 체험 네트워크 공개 테스트 체험

며칠 전 InfoQ 커뮤니티는 Tencent Cloud의 Tencent Cloud 블록체인 서비스 플랫폼(TBaaS) Chang'an 체인 체험 활동을 보았고, 작전은 호랑이처럼 치열했고 이름을 알렸습니다.경험 후, 그것은 다음과 같이 요약할 수 있습니다. 한마디: 강하다. 몇 마디 더 추가해야 한다면, 전체적인 느낌은 조립 모드가 유연하고 효율적이며 지원 도구가 충분히 설명되어 있다는 것입니다. 더 이상 고민하지 않고 주제를 시작하십시오.이 기사의 디렉토리 구조는 블록체인 분류 , TBaaS 플랫폼 소개TBaaS 플랫폼 온체인 튜토리얼의 세 부분 으로 나뉩니다.

1. 블록체인 분류:


일반적으로 블록체인은 퍼블릭체인(Public Chain), 얼라이언스 체인(Alliance Chain) , 프라이빗체인(Private Chain) 3가지로 나눌 수 있다. 퍼블릭 체인은 탈중앙화 수준이 가장 높은 블록체인으로, 기관에 의해 통제되지 않으며 전체 원장이 모든 사람에게 공개되고 투명합니다. 누구나 거래를 쿼리하고, 거래를 보내고, 퍼블릭 체인에서 장부에 참여할 수 있습니다. 퍼블릭 체인에 가입하는 데는 누구의 승인도 필요하지 않으며 자유롭게 가입하거나 탈퇴할 수 있으므로 퍼블릭 체인을 비허가형 체인이라고도 합니다. 모두가 장부에 참여할 수 있는 퍼블릭 체인은 낯설고 신뢰할 수 없는 경쟁 환경에서 유지되므로 퍼블릭 체인은 부기 노드를 선택하는 합의 메커니즘이 필요하며 이는 일반적으로 "마이닝"을 통해 말하는 것입니다. 부기 권리를 위해. 채굴이 필요하기 때문에 퍼블릭 체인 부기는 높은 지연, 높은 비용 및 낮은 효율성의 특성을 가지고 있습니다. 우리가 접하는 대부분의 블록체인 프로젝트는 퍼블릭 체인이며, 잘 알려진 퍼블릭 체인 프로젝트로는 비트코인, 이더리움, EOS 등이 있습니다.

프라이빗 블록체인(Private Blockchain) 과 퍼블릭 체인 장부는 누구에게나 개방적이고 투명하며 누구나 계정을 유지할 수 있는 반면, 프라이빗 블록체인은 블록체인의 회계 권한이 한 사람이나 조직의 손에만 있고 장부에 참여하는 것을 의미합니다. . 계정의 권한은 조직 내부에서 공식화되며, 읽기 권한은 상대방에게 개방되거나 어느 정도 제한될 수 있습니다. 예를 들어, 회사의 재무 예산의 경우 부기에 관련된 유일한 사람은 재무 부서의 리더와 회사의 상사일 수 있으며 회사의 필요에 따라 읽기 권한을 선택할 수 있으므로 회사의 의사 결정 계층 또는 모든 직원이 알도록 선택할 수 있습니다. 참여 부기 노드 수가 적고 "채굴" 경쟁이 없기 때문에 프라이빗 체인은 빠른 부기, 부기 비용 없음 및 높은 프라이버시라는 이점이 있습니다. 프라이빗 체인은 모두 내부 노드이기 때문에 회계 환경이 신뢰할 수 있으며 블록체인 기술은 조직의 단일 노드가 데이터를 변조하는 것을 방지할 수 있으며 오류가 발생하더라도 신속하게 발견할 수 있습니다. 프라이빗 체인은 기업이나 조직에 적합하며 많은 대형 금융 기관에서 프라이빗 체인을 사용하는 경향이 있습니다.

컨소시엄 체인(ConsorTIum Blockchain) 컨소시엄 체인 원장 개방성은 퍼블릭 체인과 프라이빗 체인 사이에 있습니다. 컨소시엄 체인은 여러 기관이 관리하고 유지하는 블록체인을 말하며 블록체인에 참여하는 노드는 미리 선택됩니다. 얼라이언스 체인도 얼라이언스 구성원 내 기능의 전부 또는 일부에 대해서만 개방되며, 체인에 있는 정보의 읽기, 쓰기 및 회계 규칙은 모두 얼라이언스 합의에 따라 설정됩니다. 예를 들어, 100개 대학이 특정 블록체인을 구축했다면 합의는 67개 대학이 동의해야 합의에 도달할 수 있도록 규정하고 있습니다. 프라이빗 체인과 마찬가지로 노드는 가입할 수 있는 권한이 필요하므로 얼라이언스 체인과 프라이빗 체인을 모두 권한 체인이라고 합니다. 노드와 신뢰할 수 있는 네트워크 환경 간의 양호한 연결로 인해 제휴 체인은 높은 장부 효율성, 짧은 합의 시간, 낮은 장부 비용 및 개인 정보 보호라는 특성을 가지고 있습니다. 제휴 체인은 주로 무역 협회 및 대규모 체인 기업의 거래 및 하위 단위 및 기관의 감독에 적용됩니다. 예를 들어 2015년에 설립된 R3 블록체인 얼라이언스는 은행 얼라이언스 체인으로 Wells Fargo, Bank of America, Bank of New York Mellon, Citibank 등 40개 이상의 거대 은행이 참여했습니다.

이번 Tencent Cloud 블록체인 서비스 플랫폼(TBaaS) 공개 베타 체험 활동의 주인공인 Chang'an Chain은 블록체인 기술 아키텍처에 사용되며 블록체인 네트워크를 구축하는 데 사용되는 블록체인 아키텍처에 속합니다.

유사한 제품에는 AntChain, ZhixinChain 등이 포함됩니다. 세 가지에 대한 간략한 소개:


Ant Chain: 알리바바 시스템 제품인 Ant Blockchain은 Ant Financial Services가 독자적으로 개발한 금융 수준의 블록체인 서비스 프로젝트 플랫폼으로, 블록체인 기술을 사용하여 금융, 소매 및 생활 영역 적용 문제.


Zhixin Chain: Tencent 시스템 제품, Tencent, China Net Security 및 Beiming Software가 시작하고 설립한 디지털 문화 콘텐츠 시나리오를 기반으로 하는 사법 애플리케이션 생태 서비스 플랫폼. 대상은 알리 앤트 체인입니다.


Changan Chain: 베이징 마이크로칩 연구소, 칭화 대학, 베이징 항공 우주 대학, Tencent, Baidu 및 JD.com 및 기타 유명 대학 및 기업이 공동으로 개발한 오픈 소스 하단 체인 플랫폼인 국가 대표팀. "Chang'an Chain"이라는 이름은 "장기적인 평화와 안정, 더 큰 영광을 만들고 세계를 연결"을 의미합니다. 특정 프로젝트 배경 및 소개, 계약 문서 작성 및 기타 참조, 포털: Changan Chain의 기본 기술 플랫폼 소개


2. Tencent Cloud 블록체인 서비스 플랫폼(TBaaS) 소개:
Tencent Cloud 블록체인 서비스 플랫폼(TBaaS, Tencent Blockchain as a Service)은 Tencent Cloud 인프라를 기반으로 기업과 개발자에게 원스톱, 높은 보안, 간편하고 쉬운 서비스를 제공합니다. -블록체인 서비스를 사용합니다. TBaaS 블록체인 서비스 플랫폼은 개발, 관리, 운영 및 유지보수 등의 기능을 통합하여 고객이 클라우드에서 제휴 블록체인 네트워크 환경을 신속하게 구축할 수 있도록 지원합니다. TBaaS 블록체인 서비스 플랫폼을 기반으로 고객은 블록체인 기반 기술의 취득 비용을 절감하고 블록체인 비즈니스 모델의 혁신과 비즈니스 애플리케이션의 개발 및 운영에 집중할 수 있습니다.

TBaaS 블록체인 서비스 플랫폼은 재무 수준의 보안 준수 요구 사항을 충족할 뿐만 아니라 Tencent Cloud의 완전한 기능을 갖추고 있어 사용자는 탄력적이고 개방적인 클라우드 플랫폼에서 자체 IT 인프라와 블록체인 서비스를 신속하게 구축할 수 있습니다. TBaaS 블록체인 서비스 플랫폼은 많은 블록체인 기반 기술을 통합하고 현재 Changan Chain·ChainMaker, Hyperledger Fabric 및 FISCO-BCOS 블록체인 기반 엔진을 지원하여 사용자에게 자체 블록체인 솔루션을 구축할 수 있는 유연한 옵션을 제공합니다.

이전 사례, 포털: TBaaS 제품 소개

3. TBaaS 플랫폼의 온체인 경험

Tencent Cloud 블록체인 서비스 플랫폼(TBaaS)은 경험 포털을 제공합니다. 스마트 계약을 작성하고 신속하게 체인에 업로드하기만 하면 됩니다. 포털: https://cloud.tencent.com/product/tbaas

아래 그림과 같이 Chang'an 체인을 무료로 체험하고 블록체인 네트워크 관리 모듈을 입력하려면 클릭하십시오.

여기에 이미 시험 네트워크가 있습니다. 새 네트워크를 만들 필요가 없습니다. 빨간색 영역을 클릭하여 자세한 관리 페이지로 들어가십시오.

이때 컨트랙트 업로드를 준비하는 단계입니다. 컨트랙트는 Docker Go, Solidity, C++, Rust를 선택할 수 있습니다. 개발 환경 문제 때문에 여기에서 Go를 선택했는데 Docker를 사용하여 컨트랙트를 작성하는 과정에서 힘들게 장안 체인이 IDE를 제공한다는 것을 알았고, 온라인으로 작성하고, 계약을 컴파일 및 다운로드하고 직접 업로드하여 IDE 포털: https://ide.chainmaker.org.cn/

먼저 WorkSpace를 마우스 오른쪽 버튼으로 클릭하고 계약 프로젝트를 생성하고 chinamakerDemo와 같은 계약 프로젝트의 이름을 입력합니다.

다음으로 계약 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 계약 파일을 만들고 이름을 main.go로 지정합니다.

 

 

 오른쪽 편집 영역에 계약 코드를 입력한 후 Ctrl + s를 눌러 다음과 같이 저장합니다.

package main

import (
    "strconv"

    "chainmaker/pb/protogo"
    "chainmaker/shim"
)

// AgeContract save and get age
type AgeContract struct {
}

// InitContract 合约初始化方法,会在合约部署到链上时执行
func (ac *AgeContract) InitContract(stub shim.CMStubInterface) protogo.Response {
    return shim.Success([]byte("Init Success"))
}

// InvokeContract 调用合约,在链上执行合约时,实际调用的是这个方法
func (ac *AgeContract) InvokeContract(stub shim.CMStubInterface) protogo.Response {
    //获取要调用的合约方法
    method := string(stub.GetArgs()["method"])

    //case "saveAge" 关联方法名 "saveAge" 到 ac.saveAge()
    //case "getAge"  关联方法名 "getAge"  到 ac.getAge()
    switch method {
    case "saveAge":
        return ac.saveAge(stub)
    case "getAge":
        return ac.getAge(stub)
    default:
        return shim.Error("no contarct method")
    }
}

// saveAge 保存用户年龄信息
func (ac *AgeContract) saveAge(stub shim.CMStubInterface) protogo.Response {
    //获取所有的合约参数
    args := stub.GetArgs()

    name := string(args["name"])
    ageStr := string(args["age"])
    if name == "" || ageStr == "" {
        message := "name or age is empty"
        //打印日志,调试合约时,日志会在控制台输出中展示
        stub.Log(message)
        //返回合约执行错误信息
        return shim.Error(message)
    }

    _, err := strconv.Atoi(ageStr)
    if err != nil {
        message := "convert age to int fail. err: " + err.Error()
        //打印日志,调试合约时,日志会在控制台输出中展示
        stub.Log(message)
        //返回合约执行错误信息
        return shim.Error(message)
    }

    //保存用户年龄信息到链上
    err = stub.PutStateFromKey(name, ageStr)
    if err != nil {
        message := "put state from key fail. err: " + err.Error()
        //打印日志,调试合约时,日志会在控制台输出中展示
        stub.Log(message)
        //返回合约执行错误信息
        return shim.Error(message)
    }

    //返回合约执行成功信息
    return shim.Success([]byte("success"))
}

// getAge 获取用户年龄信息
func (ac *AgeContract) getAge(stub shim.CMStubInterface) protogo.Response {
    //获取所有的合约参数
    args := stub.GetArgs()

    name := string(args["name"])
    if name == "" {
        message := "name is empty"
        //打印日志,调试合约时,日志会在控制台输出中展示
        stub.Log(message)
        //返回合约执行错误信息
        return shim.Error("-1")
    }

    ageStr, err := stub.GetStateFromKey(name)
    if err != nil {
        message := "get state from key fail. err: " + err.Error()
        //打印日志,调试合约时,日志会在控制台输出中展示
        stub.Log(message)
        //返回合约执行错误信息
        return shim.Error("-1")
    }

    if ageStr == "" {
        message := "age not found"
        //打印日志,调试合约时,日志会在控制台输出中展示
        stub.Log(message)
        //返回合约执行错误信息
        return shim.Error("-1")
    }

    //返回用户年龄
    return shim.Success([]byte(ageStr))
}

func main() {
    //运行合约
    err := shim.Start(new(AgeContract))
    if err != nil {
        panic(err)
    }
}

 계약이 작성된 후 ctrl + s를 눌러 저장해야 온라인에서 계약을 빌드하고 디버그할 수 있습니다.

디버깅이 올바른 후 계약을 온라인으로 컴파일하고 다운로드할 수 있습니다.

계약 파일이 있으면 TBaaS 플랫폼에 계약 파일을 업로드할 수 있습니다.

구덩이 밟기에 주의하시고 계약서명과 계약서 파일이 일치하지 않으면 이상한 문제가 발생하게 됩니다. 좋아요~  

컨트랙트 업로드 후 체인에 빠르게 업로드 가능

바로가기 버튼 클릭 후 컨트랙트, 호출방식, 파라미터 입력 등을 선택하고 확인을 클릭하면 완료되니 너무 편리하지 않나요~

다음으로 블록체인 브라우저에서 높이, 트랜잭션 수 등과 같은 이 블록체인의 정보를 볼 수 있습니다.

자, 이것으로 체험 튜토리얼은 끝났고, 관심 있는 친구들은 꼭 가서 체험해보세요!

추천

출처blog.csdn.net/susieweijs/article/details/125718689