Ethereum 상호 운용성

원자 트랜잭션 워크플로우에 이더리움 기반 트랜잭션을 포함할 수 있습니다.

퍼블릭 블록체인과 허가된 블록체인 모두에서 퍼블릭 블록체인과 토큰화 기능의 사용이 증가함에 따라 상호 운용성이 요구됩니다. 일반적인 시나리오에는 여러 원장 간 자산 교환, 공용 체인에서 암호화폐 지불과 연결된 허가된 블록체인에 대한 비즈니스 거래, 공용 블록체인에 허가된 블록체인 거래의 증명 게시 등이 포함됩니다. 이러한 시나리오와 다른 시나리오에 대한 상호 운용성을 제공하기 위해 Oracle Blockchain Platform은 Ethereum 및 표준 web3 프로토콜을 지원하는 모든 EVM 기반 네트워크와의 상호 운용성을 제공합니다. 상호 운용성 기능은 Geth Ethereum 클라이언트를 REST 프록시에 통합하고 atomicTransactions이라는 단일 REST API를 통해 Oracle Blockchain Platform 및 Ethereum/EVM 트랜잭션을 모두 포함하는 최적화된 2상 커밋 프로토콜을 통합관리할 수 있도록 함으로써 작동합니다. atomicTransactions API를 사용하여 여러 Oracle Blockchain Platform 채널에 대해 여러 체인코드 트랜잭션을 전송할 수 있으며, 선택적으로 Oracle Blockchain Platform 트랜잭션을 통해 원자적으로 실행되는 Ethereum 트랜잭션을 추가할 수 있습니다.

Oracle Blockchain Platform 트랜잭션과 달리 이더리움 트랜잭션은 2단계 커밋 프로토콜의 준비 및 커밋 단계로 나눌 수 없습니다. 이더리움 트랜잭션을 원자 워크플로의 일부로 포함하기 위해 Oracle Blockchain Platform은 마지막 리소스 커밋(LRC) 최적화를 사용합니다. 모든 Oracle Blockchain Platform 거래가 준비 상태가 되면 Ethereum 거래가 시작됩니다. 이더리움 트랜잭션이 성공하면 Oracle Blockchain Platform 트랜잭션이 커밋됩니다. 이더리움 거래가 실패하면 Oracle Blockchain Platform 거래가 롤백됩니다.

Ethereum 트랜잭션에는 최종이라는 개념이 있습니다. Ethereum 트랜잭션은 성공적으로 실행될 수 있지만 변경할 수 없는 블록의 일부가 될 때까지는 최종성을 달성하지 못합니다. finalityParams 매개변수를 사용하여 유한성을 검사할지 여부와 블록 또는 초 단위로 유한성을 기다릴지 여부를 제어할 수 있습니다. 일반적으로 공용 이더리움 블록체인 네트워크(Mainnet)에서 6개의 블록이 생성될 때까지 기다리는 경우 트랜잭션 유한성이 달성되었다고 가정할 수 있습니다. 개인 Ethereum 네트워크에서는 일반적으로 유한성을 위해 오래 기다릴 필요가 없습니다.

Ethereum 네트워크로 NFT 전송

또한 atomicTransactions API는 Ethereum 네트워크에 배포된 스마트 계약과의 상호 작용을 지원합니다. 이 기능을 사용하면 두 개의 트랜잭션을 원자적으로 호출하여 Oracle Blockchain Platform의 Hyperledger Fabric 체인코드에 조인된 NFT(비정지 토큰)를 이더리움 또는 다각형 네트워크로 전송할 수 있습니다. 토큰 ID, 가격 및 토큰 기록과 같은 NFT 속성은 Oracle Blockchain Platform에서 이더리움으로 원자적으로 전달할 수도 있습니다. Oracle Blockchain Platform에서 Ethereum으로 NFT를 이전한 후 NFT를 공개 NFT 마켓플레이스에 등록할 수 있습니다.

Oracle Blockchain Platform에서 Ethereum으로 NFT를 전송하려면 하나의 원자 트랜잭션에서 두 가지 기본 단계를 사용합니다.

  1. Oracle Blockchain Platform에서 NFT를 레코딩하십시오. burnNFT 메소드를 호출하여 Oracle Blockchain Platform의 Hyperledger Fabric 체인 코드에서 NFT를 레코딩(삭제)합니다. Oracle Blockchain Platform은 Blockchain App Builder 도구를 사용하여 두 가지 표준인 ERC-721 및 ERC-1155의 향상된 버전에서 NFT를 지원합니다. burnNFT 메소드에 대한 자세한 내용은 사용자 환경의 관련 항목을 참조하십시오.
  2. Ethereum에서 NFT를 조폐하십시오. Ethereum 또는 Polygon 네트워크에서 스마트 계약을 호출하여 burnNFT 방법으로 반환된 매개변수를 사용하여 해당 네트워크의 NFT를 민트합니다. NFT용 Solidity 언어로 작성된 스마트 계약의 샘플 버전은 solidity-smartcontracts-fab253.zip 아카이브 파일에서 사용할 수 있습니다. 향상된 토큰 표준 ERC-721 및 ERC-1155 각각에 대한 스마트 계약에는 mintNFT 메소드가 포함되어 있습니다. 이 메소드는 가격 및 토큰 내역과 같은 사용자정의 속성으로 NFT를 생성하며 이전 단계의 burnNFT 메소드 출력에서 인출할 수 있습니다.
    서명되지 않은 요청의 경우 사용자 정의 속성이 ParamKeys 매개변수에 있고 해당 동적 매개변수가 params 매개변수에 전달되는 경우 원자 트랜잭션 API는 burnNFT 메소드에서 매개변수를 인출하여 Ethereum 스마트 계약으로 전송할 수 있습니다. mintNFT 메소드는 다음 인수를 사용합니다.
    • to - NFT가 연동될 계정의 이더리움 주소입니다.
    • ID - NFT의 토큰 ID입니다.
    • price - NFT의 가격입니다.
    • tokenHistory - Oracle Blockchain Platform 체인코드의 NFT 내역입니다.

    스마트 계약에서는 NFT의 토큰 ID가 숫자 문자열(정수로 변환할 수 있는 문자열)이어야 합니다. 예를 들어, 토큰 ID는 2일 수 있지만 token2일 수는 없습니다.

    Oracle Blockchain Platform에 배포된 체인 코드에 있는 NFT의 토큰 URI는 Solidity 스마트 계약과 호환되도록 특정 형식을 따라야 합니다.
    • ERC-1155: ID 대체에 의존하는 모든 토큰 유형의 URI(예: https://token-cdn-domain/{id}.json)입니다.
    • ERC-721: 모든 토큰이 접두어(기본 URI)와 토큰 URI(예: http://api.myproject.example.com/token/<tokenURI>)를 공유하는 URI입니다.

    리믹스 IDE를 사용하여 스마트 계약에 대한 애플리케이션 바이너리 인터페이스(ABI)를 생성할 수 있습니다. 그런 다음 ABI를 atomicTransactions API와 함께 사용할 수 있습니다. 스마트 계약의 방법을 변경할 경우 계약을 재컴파일하고 ABI를 다시 생성해야 합니다.

NFT를 Ethereum 네트워크로 전송하는 예를 비롯하여 원자 워크플로우에서 Ethereum 트랜잭션에 사용할 매개변수에 대한 자세한 내용은 Atomic Transactions REST Endpoints를 참조하십시오.