본문 바로가기
카테고리 없음

루니버스 개발시 알아야 할 개념정리

by 순원이 2024. 5. 28.

1. 사전 단어 정의  

Contract Resource
Contract Resource는솔리디티 코드(Solidity Code)를 컴파일 했을 때 나오는 ABI와 Bytecode를 칭하는 용어입니다.

솔리디티( Solidity )
솔리디티는 이더리움 등 블록체인 플랫폼에서 스마트 계약 작성과 구현에 사용되는 계약 지향 프로그래밍 언어이다. 솔리디티는 이더리움 핵심 기여자들에 의해 이더리움과 같은 블록체인 플랫폼상에 스마트 계약을 작성할  수 있도록 개발되었다. 

 

 

 

2. 스마트 컨트랙트 작동원리  

솔리디티 언어로 프로그래밍된 스마트 컨트랙트는 컴파일러(solc)에 의해 바이트코드(bytecode)로 컴파일되고, 컴파일된 바이트코드는 블록에 포함되어, 이더리움 가상머신(EVM)에 의해 실행된다.

스마트컨트랙트는 블록체인 상에서 전자 계약서로 이루어지며, 계약 당사자들끼리 합의한 내용 및 조건이 충족되면 자동으로 실행(self-execution)되도록 설계되어 있습니다. 계약 내용을 스마트 컨트랙트 소스 코드로 작성하여 블록체인 네트워크에 전송하면 네트워크 참여자(노드)들의 유효성 검증이 이뤄지며, 검증 완료 시 해당 스마트 컨트랙트가 포함된 블록이 생성되며 배포됩니다.

이후 블록체인은 스마트 컨트랙트가 담긴 블록의 변경 상태를 지속적으로 확인합니다. 조건에 따른 상태 변경시 명령 실행 비용을 계산하고 상태변경 트랜잭션을 생성합니다. 

[스마트 컨트랙트 작동 예시]
예를 들어, 부동산을 매도하고자 하는 사람이 부동산 매매 계약의 내용이 담긴 스마트 컨트랙트를 만들어 블록체인에 전송하면 블록이 생성되어 배포됩니다. 블록체인 내 노드들은 이 스마트 컨트랙트를 검토하여 블록을 만드는데 합의하고 스마트 컨트랙트가 담긴 블록을 자신의 블록체인 맨 끝에 추가합니다. 이후 변경 사항들을 끊임없이 다른 블록들과 교류하면서 오류가 없는지 혹은 조건에 충족되어 추가 계약 사항이 진행되는지 체크합니다. 

부동산의 매수인은 블록체인 상에서 공개되어 있는 스마트 컨트랙트의 내용을 직접 확인한 후, 스마트 컨트랙트를 실행하기 위해 서명을 하게 됩니다. 이후 부동산 매수자가 스마트 컨트랙트에 담긴 내용에 따라 부동산 매매 대가에 해당하는 디지털자산을 매도인에게 이전하게 되면 등록된 부동산의 소유권이 매수자에게 자동으로 이전됩니다. 이때 블록체인 상에서의 스마트 컨트랙트는 대부분 오픈 소스(open source), 즉 누구나 확인할 수 있기 때문에 그 내용을 임의로 변경하거나 조작할 수 없습니다. 또한 스마트 컨트랙트의 체결사실도 모두에게 공유됩니다.

 

 

[스마트 컨트랙트 장점] 

1) 자율성 

블록체인 내에서 진행되기 때문에 공신력을 가진 제 3자, 혹은 기관이 필요하지 않습니다. 이에 따라 거래 당사자들이 계약에 대한 온전한 권한, 통제성을 갖게 됩니다.

2) 신뢰성 

블록체인 내 스마트 컨트랙트에 의해 계약이 공정하게 진행되며 문서의 위변조가 극히 어려워 뛰어난 신뢰성을 가집니다.

3) 보안성 

신뢰성과 연결된 것으로 문서가 암호화되어 블록체인 내 분산 원장 기술에 의해 안전하게 보관됩니다. 

 

 

 

2. 스마트 컨트랙트, 루니버스 TXAction 차이점  

 

[스마트 컨트랙트 (Smart Contract)]

스마트 컨트랙트는 블록체인 상에서 자동으로 실행되는 코드입니다. 스마트 컨트랙트는 특정 조건이 충족되면 트리거되어 사전에 정의된 동작을 수행합니다. 

  1. 자동화된 거래: 스마트 컨트랙트는 특정 조건이 충족될 때 자동으로 실행되며, 이는 거래를 자동화하고 신뢰할 수 있는 방식으로 수행할 수 있게 합니다.
  2. 탈중앙화: 스마트 컨트랙트는 블록체인 네트워크 상에서 실행되므로, 중개자 없이 탈중앙화된 방식으로 동작합니다.
  3. 투명성: 스마트 컨트랙트의 코드는 공개되어 있으며, 실행 결과는 블록체인에 기록되므로 누구나 검증할 수 있습니다.

루니버스에서 스마트 컨트랙트는 이더리움과 유사한 방식으로 작동하며, Solidity 등의 스마트 컨트랙트 언어를 사용하여 작성할 수 있습니다.

[루니버스 트랜잭션 액션 (TX Action)]

루니버스 트랜잭션 액션은 스마트 컨트랙트를 쉽게 사용할 수 있는 기능입니다. 원래 직접 솔리디티로 코드를 작성하고 스마트 컨트랙트로 등록을 해야하지만 루니버스 트랙잭션 액션은 이 과정을 생략하게 해줍니다.

 

 

 

CA, EOA, DEOA, 지갑의  차이점  

 

[EOA(Externally Owned Address)]


이더리움 프로토콜을 사용하기 위해서는 당연히 이더리움 계정 정보가 필요합니다. 즉, 회원가입부터 해야겠죠? 그리고 회원 가입을 하기 위해서는 앞서 언급한 내용처럼 개인 키정보를 생성하고, 생성한 개인 키 정보를 토대로 공개 키 정보를 생성하고, 나아가 Address를 생성하면 회원가입이 완료된다고 생각하시면 좋을것 같습니다. 이더리움에서는 이러한 과정을 통해 생성된 계정을 사용자 계정이라고 표현하며, 사용자 계정을 외부 소유 어카운트(EOA) 계정이라고 합니다.


[CA(Contract Address)]


스마트 컨트랙트의 또 다른 지칭이다.
EOA가 개인키를 통해 컨트랙트를 배포하면 해당 컨트랙트의 실행영역인 주소가 생기게 된다.
이 주소가 곧 컨트랙트 어카운트이다.


[루니버스 DEOA(Delegated Externally Owned Address)]


루니버스 DEOA란 Delegated(대표) EOA의 줄임말로, 루니버스의 안전한 HSM기반 키 보관 솔루션에게 Private Key 관리를 위임한 EOA 계정을 의미합니다. DEOA 계정을 사용하는 서비스의 사용자는 트랜잭션을 개인키 (Private Key)로 매번 직접 서명하는 번거로운 과정 대신 루니버스의 트랜잭션 파이프라인을 통해 자동으로 원격 서명 (Remote Sign)을 수행 할 수 있습니다.
즉, 기부 앱을 만들 때 기부 앱 사용자들은 DEOA를 사용하게 됩니다. 물론 앱에서 자동으로 DEOA를 생성하는 것입니다. 

 

[지갑]


지갑은 사용자가 EOA를 쉽게 관리할 수 있게 해주는 도구입니다. 예를 들어, MetaMask 지갑은 사용자가 여러 EOA를 생성하고, 각 계정의 잔액을 확인하며, 트랜잭션을 서명하고 전송할 수 있게 해줍니다. 사용자는 MetaMask의 인터페이스를 통해 복잡한 블록체인 상호작용을 쉽게 처리할 수 있습니다.

 

[EOA, DEOA, 지갑 차이점]


즉, 지갑 안에 여러 개의 EOA(각 블록체인마다 갖는 계정)가 있고 루니버스는 EOA를 쉽게 다루기 위해 DEOA라는 EOA를 만든 것입니다.
그러면 토큰끼리 이동할 때 지갑에서 지갑으로 이동하는 것이 EOA에서 EOA로 이동한다고 해야겠죠?