Corda 전문가가되고 싶으신가요? 다음 corda 튜토리얼은 Corda 애플리케이션 개발에 대해 알아야 할 모든 것을 다룹니다..

블록 체인은 먼 길을 왔습니다. 분산 원장 기술의 아이디어는 현재 조직이 겪고있는 많은 문제점을 해결했습니다. 주요 목표는 수백만 달러를 투자하지 않고도보다 효율적이고 안전하며 확장 가능 해지는 것입니다..

Corda는 글로벌 블록 체인 생태계를 제공하는 오픈 소스 블록 체인 플랫폼입니다. 스마트 계약을 사용하여 엄격한 프라이버시를 제공합니다. 또한 비즈니스가 직접 거래하고 비즈니스 운영을 간소화하기위한 비용 효율적인 접근 방식을 제공하는 데 도움이됩니다..

주요 차이점은 Corda가 트랜잭션을 처리하는 방법입니다. 각 피어에 대한 완전한 원장을 갖지 않음으로써 블록 체인 타당성, 속도 및 확장 성을 향상시키고 자하는 DLT입니다. 전체 네트워크에 알리지 않고 두 피어간에 트랜잭션을 완료 할 수있는 경우 Corda는 해당 접근 방식을 사용합니다. 또한 거래를 쉽게 추적하고 유효성을 확인할 수있는 다른 당사자를 포함하도록 설계되었습니다. 비즈니스를위한 분산 원장 기술입니다..

지금 Corda 블록 체인 튜토리얼을 시작하겠습니다.!

출시 예정 : Corda 개발 과정에 대한 초보자 가이드

Corda 개발 튜토리얼의 구조?

Corda에 대해 자세히 다룰 것입니다. 대부분의 섹션에서 중요한 Corda 개념을 다루려고합니다..

우리가 다룰 주요 개념은 다음과 같습니다..

  • 상태
  • 계약
  • 흐름 섹션

튜토리얼은 IOU 애플리케이션을 생성합니다. IOU는 “I Owe yoU”의 약자입니다. 이것은 한 사람이 다른 사람의 돈을 소유하고 있다는 사실을 간단하게 표현한 것입니다. 나중에 개념에 대해 자세히 다룰 것입니다..

더 간단하게 만들기 위해 Kotlin 프로그래밍 언어를 사용할 것입니다. 학습자로서 Kotlin을 알고 있으면 좋겠지 만 튜토리얼을 따라야하는 데 필요한 기술은 아닙니다..

도구

초보자를위한 Corda 튜토리얼을 시작하기 전에 다음 도구가 필요합니다. 개발자가 자주 사용하는 블록 체인 도구도 있습니다. 그러나 우리는 오늘 그것들을 다루지 않을 것입니다..

  • Kotlin
  • Gradle
  • 힘내
  • IntelliJ
  • 명령 줄

통합 개발 환경에서는 IntelliJ를 사용할 것입니다. 우리의 개발을 단순화 할 것입니다.

Corda 튜토리얼

Corda 튜토리얼

Corda는 무엇입니까?

Corda 블록 체인은 상호 운용 가능한 블록 체인 네트워크를 제공하여 비즈니스 문제를 해결하는 오픈 소스로 가장 잘 정의됩니다. 주요 기능에는 엄격한 개인 정보 보호, 효율성 및 스마트 계약 기술을 사용한 직접 거래가 포함됩니다..

Corda에서 사용되는 스마트 계약은 JVM 언어 또는 Java를 사용하여 작성할 수 있습니다. Corda 플랫폼 내의 dApp은 CorDapps로 알려져 있습니다. 또한 Notary 인프라를 사용할 수있는 P2P 노드 네트워크를 제공합니다. 인프라는 네트워크의 모든 피어에게 트랜잭션 세부 정보를 브로드 캐스트 할 필요없이 트랜잭션의 유효성을 검사하고 순서를 지정하는 데 사용됩니다..

블록 체인에서 사용되는 또 다른 중요한 구성 요소에는 참여자 간의 협상 및 커뮤니케이션을 관리하는 Flow 프레임 워크가 있습니다..

Corda Ledger 이해

Corda Ledger는 기존 블록 체인 기술에서 사용하는 원장 시스템과 유사하지 않습니다. 그렇기 때문에 작동 방식을 명확하게 파악하고 기능적 관점과 데이터 관점 모두에서 이해해야합니다..

Corda 원장은 그래프처럼 작동합니다. 그래프의 모든 노드는 직접 또는 다른 노드를 통해 서로 연결됩니다. 원하는 경우 모든 노드가 서로 통신 할 수 있습니다. 그래프를 사용하면 트랜잭션을 전 세계적으로 브로드 캐스트 할 필요가 없습니다..

노드 검색

그렇다면 노드는 어떻게 서로를 발견합니까? 그들은 네트워크 맵을 사용하여 서로를 찾습니다. 전화 번호부처럼 생각할 수 있습니다. 네트워크 맵에는 이러한 각 서비스를 찾기위한 메타 데이터가 포함되어 있으므로 맵 검색을위한 좋은 방법을 제공합니다..

작동 원리?

비 글로벌 방송 블록 체인 네트워크에서 가장 큰 도전은 합의입니다. 따라서 노드는 서로에 대해 어떻게 알고 정보를 확인합니까??

여기서 대답은 공유 된 사실입니다. 각 노드는 어떤 식 으로든 다른 노드와 겹칩니다. 공유 된 사실은 Corda 원장에 저장되며 정보를 확인하는 데 사용할 수 있습니다. Corda 원장은 이러한 세트 세트를 포함합니다. 중앙 노드가 없기 때문에 이러한 노드는 사물을 확인할 필요가있을 때 프록시 역할을합니다. 해당 정보를 저장하기 위해 각 노드에는 변경할 수없는 사실이 포함 된 저장소가 있습니다. 이것이 개발자가 블록 체인을 구현하는 방법입니다..

상태

Corda 블록 체인의 상태는 변경할 수 없습니다. 특정 시점에서 거래, 계약 또는 계약에 대한 공유 사실을 저장하는 데 사용됩니다..

기술적으로 들리나요? 좀 더 간단한 말로 쪼개 보자.

공유 사실

Corda 원장을 사용하는 두 사람을 살펴 보겠습니다. 이름을 Alpha와 Bravo로 지정하겠습니다..

둘 다 사실을 공유하고 있습니다. 공유 된 사실은 IOU (I Own You)입니다. IOU는 대출 기관이 대출 제공자로 인해 돈을 가지고있을 때 사용됩니다. 사실을 공유하기 위해 둘 다 IOU에 표시된 동일한 공유 정보를 갖습니다..

무엇이든 표현

상태는 무엇이든 표현하는 데 사용될 수 있습니다. 이는 다양한 코다 사용 사례에 대한 모든 형태의 정보를 저장할 수 있음을 의미합니다. 개발자는 상태를 사용하여 KYC 정보, 금융 상품, 신디케이트 대출 등을 저장할 수 있습니다..

또한 상태를 사용하여 여러 속성을 저장할 수 있습니다. 그러나 주에는 제한이 있습니다. 제한 사항은 상태에 유형이 지정되면 유형을 변경할 수 없다는 것입니다. IOU 상태를 생성하면 남은 수명 동안 IOU 상태를 명시해야합니다..

불변하고 진화하는

상태는 불변으로 만들어집니다. 그러나 불변성은 시간과 관련이 있습니다. 주어진 시간에 상태가 표시됩니다..

즉, 원래 상태에 추가하여 새 상태를 만들 수 있습니다. 저장해야하는 상태에 새로운 변경이있을 때 수행됩니다. 그런 다음 이전 상태를 역사적으로 불립니다..

예를 들어, Alpha가 Bravo에게 부채를 갚으면 Alpha가 부채를 청산했다는 사실을 인용하여 새로운 주가 생성됩니다. 또한 상태가 완료되면 IOU가 만료됩니다. 간단히 말해서 상태의 수명주기는 다음과 같습니다..

  1. 알파가 브라보에게 빚을지고 있음을 보여주는 첫 번째 주가 만들어집니다. 또한이 주에서는 날짜, 시간, 이자율, 대출 금액 및 IoU에 필요한 기타 유용한 정보를 포함하여 IoU에 대한 자세한 정보를 공유합니다..
  2. 이제 Alpha가 부채를 해결하면 새로운 정보를 업데이트하는 새로운 상태가 생성됩니다. 이전 상태는 변경 불가능하므로 어떤 식 으로든 건드리지 않습니다..
  3. 이제 두 사용자가 공유 한 사실에서 새 상태가 업데이트됩니다..
  4. 이제 옛 상태는 역사적으로 불립니다. 단일 트랜잭션에 여러 기록 상태가있을 수 있습니다. 이것은 일련의 상태를 만들 수 있습니다..
  5. 최신 상태를 참조하는 시퀀스 헤드가 생성됩니다. 또한 최신 상태는 미소 비로도 불립니다..

더 읽어보기 :Hyperledger vs Corda vs Ethereum 비교 가이드

개발 환경 준비

이제 dApp 개발 가이드에 따라 환경은 Corda 개발 튜토리얼을위한 준비가되어 있어야합니다. 시작하려면 다음 도구가 필요합니다..

  • Oracle JDK 8 JVM – v8u171 이상.
  • 힘내
  • IntelliJ IDEA

Git 저장소 복제

여정을 시작하는 가장 좋은 방법은 개발 환경에서 CorDapp의 예제를 실행하는 것입니다. 좋은 소식은 Corda가 로컬에서 다운로드하고 실행할 수있는 CorDapp 예제를 제공한다는 것입니다..

아래와 같이 git clone 명령을 사용하여 저장소를 로컬로 복제 할 수 있습니다..

자식 클론 http://github.com/roger3cev/corda-training-template.git

튜토리얼에서는 IntelliJ를 사용하여 git 저장소를 가져올 것입니다. IntelliJ를 엽니 다. 완료되면 버전 관리에서 체크 아웃 할 수있는 옵션이 표시됩니다. 그것을 클릭 한 다음 컴퓨터에서 저장소를 복제하십시오..

intelliJ

프로젝트 저장을 선택할 수 있습니다. 아래와 같이 프로젝트 저장소를 찾을 수 있습니다..

프로젝트 구조

오른쪽 하단에 아래와 같이 Gradle Project 가져 오기라는 알림이 표시됩니다. Corda Tutorial이 작동하는 것이 중요합니다..

“Import Gradle Project”를 클릭합니다.

gradle 프로젝트 가져 오기

프로젝트 SDK도 설정해야합니다. 프로젝트 설정으로 이동 한 다음 최신 버전의 Java를 선택합니다. 제 경우에는 Java 11.0.5로 설정되었습니다..

실행할 오류를 발견하면 Gradle을 업그레이드하고 작동하는 데 필요한 리포지토리를 가져와야합니다. 그렇게하려면 시간이 좀 걸립니다. 그러니 뒷좌석에 앉아 완료 될 때까지 기다리세요.

저에게는 모든 Gradle 종속성 업데이트를 완료하는 데 약 20 분이 걸렸습니다..

Corda 튜토리얼 프로젝트의 구조를 빠르게 살펴 보겠습니다. 우리의 주요 저장소는 src 파일입니다. Kotlin을 사용하므로 Kotlin-source 폴더를 사용할 것입니다. 그 아래에 src 폴더가 있습니다. java-source 폴더와 혼동하지 마십시오..

Corda 튜토리얼 kotlin 소스

여기에서 교육 폴더에서 필요한 모든 파일을 찾을 수 있습니다. 응용 프로그램의 테스트 장치가 포함 된 “test”폴더도 있습니다..

우리가 알아야 할 또 다른 중요한 파일은 IOUState.kt입니다. 교육 내에 있습니다. > 상태.

상태 단위 테스트 작동하기

IOUState 클래스는 매우 기본적으로 보입니다. 아직 완료되지 않았습니다. 테스트 기반 개발 방법론을 사용하여 클래스를 개발하고 작업 준비를 할 것입니다..

테스트 기반 개발은 현대적인 개발 관행과 관련하여 훌륭한 접근 방식입니다. 처음부터 버그 또는 기타 문제를 해결하는 데 도움이됩니다..

그렇기 때문에 다운로드 한 템플릿에 계약, 흐름 및 상태를 포함한 각 클래스에 대한 해당 테스트가 이미 있습니다..

시작하려면 테스트로 이동해야합니다. > Kotlin> 그물 > Corda > 훈련 > 상태 > IOUStateTests

IOUStatetests

이미 작성된 테스트를 찾을 수 있습니다. 또한 수많은 문서가 함께 제공됩니다. R3 Corda 팀은 시간을내어 템플릿을 만들었습니다..

단일 테스트를 실행하려면 아래와 같이 섹션의 주석 처리를 제거해야합니다..

주석 해제 코드

코드를 선택하고 Ctrl + /를 눌러 주석을 제거하십시오. MAC을 사용하는 경우 CMD + /를 사용하여 주석을 제거하십시오..

이제 단위 테스트를 실행할 시간입니다..

IOUState 클래스가 거의 비어 있으므로 테스트가 실패하고 다음 테스트 오류가 발생합니다..

실패한 테스트

보시다시피 NoSuchFieldException으로 인해 Kotlin-source : test가 실패했음을 의미합니다. 이것은 테스트가 아무것도 찾지 못한 금액 변수를 예상하고 있음을 의미합니다..

이를 수정하려면 IOUState.kt 파일로 돌아가서 편집해야합니다. 블록 체인 앱을 구축하는 방법을 안다면 쉬운 작업이 될 것입니다..

계속하기 전에 Kotlin에 대해 더 잘 이해해야합니다. 우리가 편집 할 코드를 이해하려면 소개를받는 것이 좋습니다. Kotlin은 조밀 한 프로그래밍 언어입니다. 또한 Kotlin은 JVM 가상 머신으로 변환 할 예정이므로 자습서에서 사용하는 것이 좋습니다..

프로젝트 구조

  • 데이터 클래스 IOUState →이 키워드는 “IOUState”라는 데이터 클래스를 정의 함을 의미합니다.
  • val 데이터 → 변수 선언. 필드 이름은 데이터입니다.
  • String = “data”→ 정의 된 것이없는 경우 데이터 변수의 기본값을 정의합니다..
  • ContractState → 인터페이스

테스트에 따라 IOUState.kt 파일을 모두 변경하면 IOUState 클래스는 다음과 같습니다..

데이터 클래스 IOUState (금액 : 금액,

대출 기관 : 파티,

차용인 : 파티,

지불 : Amount = Amount (0, amount.token),

val 재정의 linearId : UniqueIdentifier = UniqueIdentifier ()) : LinearState {

/ **

*이 속성은 유효한 트랜잭션에서이 상태를 “사용”할 수있는 노드 목록을 보유합니다. 이 경우

* 대출자 또는 대출자.

* /

val 재정의 참가자 : 목록 가져 오기() = listOf (대출자, 차용자)

/ **

* IOU 정산 및 전송을위한 트랜잭션 구축시 도우미 방법.

* – [지불] 유료 부동산에 금액을 추가합니다. 유효성 검사를하지 않습니다..

* – [withNewLender] 새로 지정된 대출 기관으로 현재 상태의 사본을 만듭니다. 환승시 사용.

* /

장난 pay (amountToPay : Amount) = copy (paid = paid.plus (amountToPay))

장난 withNewLender (newLender : Party) = copy (lender = newLender)

}

이제 위의 설명에 따라 도우미 메서드를 추가 할 수 있습니다..

Corda 전문가가되고 싶습니까? 다음은 인증 프로세스를 안내하는 R3 Corda 인증 가이드입니다..

Corda 연락처

우리는 주가 새로운 주로 발전 할 수 있다는 것을 배웠습니다. 개발자는 계약을 사용하여 원장 상태의 진화를 제어 할 수 있습니다. 이 섹션에서는 계약에 대해 자세히 알아 봅니다..

R3 Corda는 전체 네트워크에 메시지를 브로드 캐스팅하는 데 의존하지 않기 때문에 각 상태 유형에 대해 공통 트랜잭션 확인 정의를 사용합니다. 이러한 방식으로 Corda 네트워크는 거래를 확인하고 합의를 얻습니다. 다른 블록 체인이 거래를 기록하는 방식과 매우 유사합니다..

Corda 계약은 기능을 통해 구현됩니다. 상태를 데이터 저장 단위로 생각할 수 있으며 계약은 데이터와 해당 상태 변경을 확인하는 방법입니다. 이러한 확인 기능은 상태 유형에 따라 다릅니다..

상태를 확인하고 서비스 할 수 있도록하려면 각 상태를 계약으로 참조해야합니다..

각 계약에는 계약 코드 및 법적 산문을 포함하여 두 가지 항목이 포함됩니다..

이해하기 위해 다음 이미지를 살펴 보겠습니다..

계약 상태

보시다시피 계약에는 두 개의 항목이 포함되어 있으며 상태에는 해당 코드에 대한 IOU 계약 참조가 있습니다..

법적 산문 : Legal Prose는 계약에 대한 법적 계약에 대한 참조로 사용됩니다. 분쟁 발생시 기존의 법적 체계와 사법 체계를 사용할 수 있도록하기 위해 사용됩니다..

Corda Contracts의 다른 주요 기능은 다음과 같습니다.

  • 여러 계약이 계약을 참조 할 수 있습니다. 또한 계약에는 여러 상태 유형이 포함될 수 있습니다.
  • Corda는 검증 기능을 활용하여 제안 된 거래를 검증합니다.
  • 확인 방법의 서명은 다음과 같습니다.
  • fun verify (tx : 트랜잭션) : 단위
  • 검증 방법은 모든 제약을 실행하여 트랜잭션을 검증합니다. 제약 조건이 실패하면 예외가 발생합니다. 그렇지 않으면 거래가 유효한 것으로 간주됩니다..
  • 검증 기능은 결정적입니다..

블록 체인 템플릿에는 Corda 계약에 대한 코드도 포함되어 있습니다. 또한 주와 유사한 Corda 계약에 접근해야합니다. Corda 테스트 단위로 이동 한 다음 계약 클래스에 필요한 코드를 추가하면 도움이 될 것입니다..

Corda 거래

다음 목적지는 Corda Transactions입니다. 상태 변경을 가능하게하는 것은 트랜잭션입니다..

그렇다면 거래 란 무엇입니까? 입력 상태 참조 (0 이상)를 포함하는 컨테이너로 가장 잘 정의 할 수 있습니다. 또한 상태를 생성합니다 (0 개 이상)..

트랜잭션은 여러 피어가 실시간으로 서로 상호 작용할 수 있도록하여 네트워크가 최적의 성능을 발휘하도록합니다. 두 당사자가 다른 동료 활동을 방해하지 않고 원자 스왑을 수행 할 수 있습니다. 또한 트랜잭션은 본질적으로 원자 적입니다. 이는 거래가 축소되거나 분할 될 수 없음을 의미합니다..

또한 세 가지 유형의 거래가 있습니다 : 보험, 업데이트 및 종료. 각각은 자신의 의제를 가지고 있습니다. 아래에 나열하겠습니다..

  • 보험 → 새로운 상태 생성
  • 업데이트 → 상태 속성 변경
  • 종료 → 원장에서 상태 제거

Corda Flows

Corda Flow는 피어가 성공적인 트랜잭션을 수행 (실행)하는 데 필요한 단계입니다..

흐름은 CorDapp 핵심 비즈니스 로직을 결정합니다. 트랜잭션이 올바른 순서와 올바른 매개 변수로 실행되는지 확인하는 책임이 있습니다. 트랜잭션은 본질적으로 복잡하기 때문에 모든 것이 의도 한대로 작동하도록 흐름이 필요합니다..

흐름 제어는 의사 소통시기, 의사 소통 대상 및 의사 소통 대상을 보장합니다..

이것은 전체 네트워크에 트랜잭션 세부 정보를 브로드 캐스팅하는 데 초점을 맞춘 다른 분산 원장 기술과 완전히 반대입니다. Corda는 트랜잭션에 송신자와 수신자라는 두 가지 중요한 매개 변수가 있어야하는 지점 간 트랜잭션에서 번창합니다..

흐름에 대해 알아야 할 주요 사항

  • 흐름은 몇 초 내에 완료되거나 완료하는 데 며칠이 걸릴 수 있습니다.
  • 완전히 자율적입니다.
  • Flows는 응답을 기다리기 전에 잠을 잔다
  • 흐름은 개발자가 적절한 상태 머신 개발을 보장 할 수있는 메커니즘을 제공하는 Flow Framework를 따릅니다..
  • 흐름은 쌍을 이루고 일방적 일 수 있습니다.
  • 개발자는 하위 흐름을 코딩하여 코드를 더 간단하게 만들 수도 있습니다.

한 단계 더 나아가 전문가가되고 싶습니까? 다음은 Python으로 블록 체인을 구축하는 방법에 대한 가이드입니다..

일치

지금까지 논의한 모든 흥미로운 것 중에서 Corda가 특별한 점은 합의를 이루는 방법입니다. Corda는 고유 한 접근 방식을 가지고 있으므로 비즈니스에 적합합니다..

우선 Corda는 두 가지 합의 알고리즘을 사용합니다. 그것은 다음을 포함합니다

  • 고유성 합의 →이 합의 방법은 원장에서 충돌이 발생하지 않도록합니다.
  • 검증 합의 → 검증 합의는 거래를 처리하고 계약 코드에 따라 충돌이 발생하지 않도록합니다. 네트워크 내에서 공유 상태의 진화를 촉진합니다..

Corda Consensus에 대해 알아야 할 주요 사항 :

  • 고유 한 합의는 원장 업데이트가 항상 고유하도록 보장합니다. 또한 업데이트가 진행될 때 원장이 유효한지 확인합니다..
  • 검증 합의는 업데이트가 유효한지 확인합니다..

Corda 노드

여기서 논의 할 Corda의 마지막 섹션은 Corda 노드입니다. Corda 노드는 Corda의 상위 레벨보기입니다..

그래서 정확히 Corda 노드는 무엇입니까?

Corda 노드는 Java Virtual Machine에서 실행되는 엔티티입니다. 그것은 다음을 포함합니다

  • 그것은 스토리지 서비스와 금고를 제공합니다
  • SQL DB는 볼트 및 스토리지 서비스를 지원합니다.
  • 전용 폴더는 첨부 파일을 저장하는 데 사용됩니다.
  • CorDapps로 알려진 사용자 지정 기능 및 기본 제공 확장을 제공합니다.
  • RPC 클라이언트 프레임 워크 제공

이것은 Corda 노드의 모습입니다..

Corda 노드

보시다시피 Corda 네트워크를 실행하는 데 필요한 모든 측면이 포함되어 있습니다. 흐름과 상호 작용하고 맞춤형 CorDapp 기능을 제공합니다..

결론

이것으로 Corda 튜토리얼이 끝납니다. 여기서 우리는 Corda를보고 IoU CorDapp을 보려고했습니다. Corda GitHub 저장소에서 제공되는 템플릿 교육을 사용하여 다른 섹션에 대해 논의했습니다..

우리의 초점은 Corda가 제공하는 모든 것을 설명하지 않고 Corda를 시작하는 것입니다. 이를 위해 항상 Corda 문서를 사용할 수 있습니다. Corda 개발 튜토리얼에 대한 향후 과정도 있습니다. 완전한 개발 가이드가 필요하다면 반드시 확인해야합니다..

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me