이 부분에 대한 내용은 상당히 어렵다고 느껴서... 아는한에 대해서만 작성해 보겠습니다.
이 부분에 대한 답변은 두가지 정도로 할 수 있다고 생각합니다.
첫번쨰는 필요가 없기 떄문입니다.
비트코인의 경우에는 단순히 더하기, 뺴기 연산만을 하기 떄문에 튜링 완전이어야 하는 이유가 없습니다.
반대로 이더리움은 다양한 스마트 컨트랙트를 구현하기 떄문에 튜링 완전이어야 합니다.
두번쨰는 보안상의 문제 입니다.
이더리움 같은 경우네는 채굴 보상으로 코인이 주어지지 않습니다.
그러기 떄문에 반복문을 통한 공격에도 면역이 되어 있지만 반대로 비트코인의 경우에는
보상으로 코인이 주어지기 떄문에
반복문에 의한 공격이 가능합니다.
그러기 떄문에 튜링 불완전 언어를 사용하게 됩니다.
체인 링크라는 용어를 체인 코드로 이해를 하여 대답을 해보겠습니다.
일단 두가지에는 스마트 컨트랙트를 관리한다는 면에서 공통점을 가지고 있습니다.
그리고 솔직하게 말해서 두가지의 차이점에 대해서는 어떠한 설명을 해야 할지를 모르겠습니다.
제가 알고 잇는 체인 코드는 일종의 스마트 컨트랙트를 관리하기 위한 패키지로 알고 있고 동시에 스마트 컨트랙트를 처리한다는 역할로 알고 있습니다.
둘 모두 일단 VM 즉 가상머신을 말하며
EVM은 이더리움, EOS는 이오스에서 사용하는 VM을 말하는 것으로 알고 있습니다.
이러한 가상머신이 필요한 이유는 개발자마다 개발환경이 다르기 떄문입니다.
우리는 개발환경이 달라도 똑같은 결과같은 도출 해야 합니다.
예를 들면 미국에서 만드는 햄버거 재료와 한국에서 만드는 햄버거 재료는 원산지부터 다릅니다.
하지만 결과적으로는 만들어진 음식은 햄버거라고 통칭을 하기 떄문에 서로 햄버거로 인식을 하여 부르게 됩니다.
VM이 하는 역할이 이와 같습니다.
원산지가 달라도 결과적으로는 같은 결과를 보여주는 역할을 하게 됩니다.
JVM으로 만들어진 이유에 대한 의견은 저의 사견입니다.
JVM은 자바 가상 머신을 말합니다.
이는 바이트 코드를 읽을수 있는 장점이 있습니다.
EVM의 주 언어인 솔리디티의 경우에는 고급 언어이기 떄문에 EVM에서 읽을 수가 없습니다.
그러기 떄문에 우리는 바이트 코드로 변환하여 EVM으로 전송을 하게 되고 이후 EVM은 이를 opcode로 읽게 됩니다.
즉 EVM에서 바이트코드를 읽기 위해서 JVM으로 만들어 졌다고 생각을 하고 있습니다.
간단합니다. 해킹을 당했기 떄문입니다.
뱅코르 알고리즘은 방코르라는 탈중앙화 거래소에서 사용하는 알고리즘으로 자산을 핫월렛이 아닌 스마트 컨트랙트에 보관함으로써 거래가 이루어지는 방식입니다.
하지만 해킹 사건이 있었고 이로 인해 자산을 동결을 하고 해결을 해나간 것으로 알고 있습니다.
하지만 이처럼 특정 자산을 동결하는 행위 자체가 탈중앙화에 어울리지 않는 행위이기 떄문에 사용하지 않는것으로 알고있습니다.
유니스왑의 경우에는 전적으로 사용자에게 처리를 맡기며 유동성 알고리즘 및 유동성 풀을 운용하기 떄문에 방코르 알고리즘보다 더 간단하고 사용자 친화적이라는 장점이 있습니다.
이 부분에 대해서는 잘 모르겠습니다...ㅠ
이 부분에 대해서는 간단합니다.
얼마만큼의 많은 상태를 변형하였냐에 따라 달라집니다.
즉 많이 변화시킨만큼 많은 금액을 부과하게 됩니다.
이 부분에 대해서는 잘 모르겠습니다...ㅠ
이 부분에 대해서는 저의 사견입니다
어 실제로도 ERC-20, ERC-721토큰을 발행하려면 여러 계약이 엮여서 상속을 받은 상태로 배포가 되게 됩니다.
제가 스스로도 실습하면서 진행을 해보았지만 그냥 하나의 계약을 배포할경우와 별다른 차이점을 발견하지 못한 상태입니다...
단순히 여러 계약이 있기 떄문에 배포 메모리가 더 소요될수도 있다고는 생각하지만 그 외의 단점에 대해서는 아직 있다고 생각하지 못하고 있습니다.
스마트 컨트랙트는 트랜잭션을 통해서 유발이 되고 트랜잭션은 EOA라는 지갑에서 발생을 하게 됩니다.
그러면 EOA는 일종의 블록체인 생태계 외부의 지갑에서 트랜잭션을 보내서 생태계의 상태를 변형시키는 역할을 하게 되는데 이떄 블록체인 생태계에 들어갈떄의 창구 역할을 CA라는 지갑이 하게 됩니다.
예를들면
우리가 ATM기계에서 카드에 잇는 돈을 뺴내려고 할떄
카드를 EOA, ATM기계를 CA라고 이해를 하시면 될것 같습니다.
이렇게 트랜잭션이 전송이 되면 노드들은 트랜잭션을 받게 되고 이후 노드들 또한 CA를 통해서 트랜잭션을 유발 시켜 스마트 컨트랙트를 실행시키는 것으로 알고 있습니다.
원래 CA는 트랜잭션을 발생 시킬수 없습니다.
일반적인 어플리케이션과 다른점은 블록체인과 기존의 DB시스템의 차이라고 설명할수 있을껏 같습니다.
dApp같은 경우에는 블록체인 생태계에 직접적으로 블록으로 저장이 되게 됩니다.
그러기 때문에 무결성이 보장이 되며 자신의 계정이 도난, 해킹 등에 대한 위험이 덜하게 됩니다.
일반적인 어플리케이션은 이와 반대의 장점과 단점을 가지고 있다는 것으로 이해를 하면 될 것 같습니다.
EVM은 솔리디티를 통해서 들어온 바이트 코드를 받아서 opcode를 실행시켜 생태계의 상태를 바꾸는 역할을 하게 되고 구성요소는 크게 3가지가 있습니다.
[1] 스택
EVM은 들어오는 바이트 코드를 스택 구조로 처리를 하게 됩니다.
[2] 메모리
EVM은 휘발성 메모리를 가지고 있습니다. 마찬가지로 들어오는 바이트 데이터를 배열로 저장을 하게 되고
프로그램이 종료되면 메모리에 들어있는 데이터도 사라지게 됩니다.
[3] 스토리지
비 휘발성 데이터이며 시스템 상태에 따라서 유지가 되게 됩니다.
가상 ROM이라는 공간에 프로그램 코드와 별개로 분리해서 저장을 하게 됩니다.
EVM은 데이터를 받게 되면 메모리와 스택은 반드시 비어있어야 하며 프로그램의 연산 실행 횟수를 0으로 초기화 한뒤 작동하게 됩니다.
그만큼 더 많은 가스가 소요되게 됩니다.
아주 단순한것 같습니다. 지정된 가스보다 더 많이 소요되면 그만큼 더 많은 비용을 지불하게 되는 것 입니다.
이러한 이유가 발생하는 원인에 대해서는 잘 알지는 못하지만 만약 거 많은 가스비를 지불할 금액이 트랜잭션은 사라지고 수수료 또한 반환받지 못하는 것으로 알고 있습니다.
일단 기본적으로 사용자 설정에 따라서 달라지는 것으로 알고 있습니다.
빠르게 처리가 완료되기를 원하면 더 많은 가스비를 사용하면 되고 또한 만약 네트워크가 과부화 상태라면 더 많은 가스비가 들게 됩니다.
트랜잭션 수수료또한 이와 같은 원리로 작동을 하게 됩니다.