Answer:
거래소가 사용자에게 부여한 지갑 주소는 EA주소가 아닌 컨트랙트 주소다. 그리고 컨트랙트 주소는 생성되는 규칙과 방식이 정해져 있다. 그리고 이더리움과 이더리움 클래식은 동일한 주소 생성 규칙을 가지고 있기 때문에, 만약 이더 클래식을 이더리움 메인넷의 ERC20 컨트랙트 주소로 잘못 입금했다면, 동일한 방식으로 이더리움 클래식 네트워크에서 컨트랙트 주소를 만들어 돌려받은 다음 오입금한 사용자에게 돌려주면 된다.
Reference: https://medium.com/@kevin.j
Answer:
Answer:
Push1
Answer:
Answer:
Answer:
Answer:
비트코인 시스템에서 계정을 생성할 때는 실세계에 있는 어떠한 정보도 필요가 없다. 따라서 공개된 거래내역이 있어도, 결국 거래내역에 존재하는 건 해커의 address 이외의 어떠한 정보도 없다.
해커가 특정 풀노드에 지속적으로 의존하는 등의 패턴을 보이지 않는 이상 IP추적 등의 방법 또한 어렵다. 그리고 만약 해커가 훔쳐간 비트코인을 모네로, 지캐시 등의 익명 코인으로 변환하여 과정을 꼬아버린다면 추적은 사실상 불가능하다.
Answer:
Answer:
Answer:
토큰의 전송을 멈춘다고 해서 블록체인에 저장되어 있는 거래 내역이 위변조되는 건 아니다. 멈추기 이전까지의 정보는 이미 블록체인상에 기록되어 있을 것이기 때문이다.
Answer:
Answer:
Answer:
migrate: 이 명령어를 통해 스마트 컨트랙트를 네트워크에 배포한다. 만약 complie과정을 진행하지 않았다면, contracts 폴더 내의 솔리디티로 작성되어 있는 컨트랙트 소스코드들을 컴파일하는 것부터 시작한다.
compile: contracts 폴더 내의 솔리디티로 작성되어 있는 컨트랙트 소스코드들을 컴파일한다. 두번째 컴파일부터는 변경된 이력이 있는 컨트랙트 소스코드에 대해서만 컴파일이 진행된다.
test: test 폴더내에 .sol, .js 파일들을 컴파일 후 유닛테스팅을 진행한다. (Answerd by 수지아빠: http://javaexpert.tistory.com)
Answer:
Answer:
Answer:
Answer:
Answer:
Answer:
Answer:
어떤 내용을 가지고 있느냐에 따라 실행가능 여부가 달라진다. 예를 들어, transfer를 생각해보자. 이 메서드는 한 번의 실행 당 21,000가스를 소모한다.
gaslimit이 800만이라고 할 때, for (i = 0; i < 2000; i++) trasnfer를 실행하게 된다면? 퍼블릭 이더리움에서 해당 알고리즘의 실행은 실행 도중 비정상적으로 중단될 수밖에 없다.
따라서 얼마나 많은 gas를 소모하는지를 측정하는 가스복잡도의 관점에서 컨트랙트 코드를 분석하고 활용할 필요가 있다.
Answer:
Answer:
ICO를 진행함에 있어 토큰의 총 발행량 | 토큰의 가격 | 토큰의 사후적 분배율, 이 3가지 항목이 동시에 고정될 수 없는 것을 의미한다.
Reference: https://medium.com/@kevin.j
Answer:
Answer:
Answer:
Answer:
Answer:
Answer:
비트코인의 블록은 크게 블록헤더와 트랜잭션들로 구성되어 있다. 실제로 트랜잭션들은 블록 내에 1차원 vector로 저장되어 있다.
UTXO를 사용하기 위해서는
첫째: 해당 UTXO의 scriptPubKey에 OP_DUP << OP_HASH160 << hash160 << OP_EQUALVERIFY << OP_CHECKSIG 중 hash160에 자신의 주소가 포함되어 있어야 한다.
둘째: scriptPubKey 스크립트를 실행하여 마지막에 true가 반환될 수 있다면, 즉 자신이 서명 정보를 통해 스크립트를 증명할 수 있어야 한다. 물론 사용하기 전에, 사용하려는 output value보다 더 많은 input value가 있어야 되는 것은 물론이다.
결국 자신의 주소로 할당된 UTXO의 value가 사용할 value보다 커야하며 사용할 때는 input으로 들어 온 scriptPubKey를 실행하면 되는 것이고, 전송할 때는 수신자의 주소를 기반으로 scriptPubKey를 생성하고 거래를 네트워크 상에 배포하면 된다.
Answer:
해시함수는 input에 매핑되는 고유한 output을 만들어내는 함수다. 머클 트리는 이 해시함수의 특성을 아주 잘 이용한 자료구조 중 하나로, 이진 트리에 해시 개념을 도입한 자료구조다.
Transcation이 여러 개 있을 때, 이 트랜잭션들을 리프노드로 두고 두개씩 묶어서 해시하고 해시된 값들을 또 두개씩 묶어 해시하는 과정을 반복하면서 루트까지 거슬러 올라간다. 이렇게 해시의 해시들로 구성되어 결국 루트까지 갔을 때, 그 루트를 머클루트라 한다. 리프 노드에 해당하는 거래내역이 하나라도 변조된다면 머클 루트값이 변하게 되는 원리는 바로 이 때문이다.
머클 path는 머클 트리의 장점이다. 특정 트랜잭션의 위변조 여부를 알고 싶을 때, 머클 트리내에 해당 트랜잭션과 관련된 해시만 따로 추출하게 되는데 이 때의 관련 해시들을 Merkle Branch라고 하며 이 Branch가 곧 path라고 할 수 있다.
코드 수준에서의 자세한 내용은 아래의 레퍼런스를 참조
Reference: https://steemit.com/bitcoin/@dlgusdn616/bitcoin01-01
Answer: (by HeuristicWave)
비트코인의 블록헤더는 이전 블록 헤더의 해시, 타임스탬프, 난이도, 넌스, 머클트리의 루트해시를 가지고 있지만, 이더리움의 블록헤더는 이전블록 헤더의 해시, 타임스탬프, 넌스, 난이도, 가스의 사용량, 상태 루트, 트랜잭션 루트, 리시트루트를 가지고 있다.
Answer:
Answer:
전체 Hash Power(연산량)의 51% 이상을 차지했을 때, 해당 해시파워를 가지고 있는 노드는 다음 블록을 생성할 수 있는 확률이 50%가 된다. 따라서 연산량을 압도적으로 높여서 독점하게 되면 사실상 블록을 검증하고 블록체인에 추가해나가는 작업을 임의의 노드가 통제할 수 있고, 여기서 공격이 발생할 수 있다.
압도적인 해시량을 바탕으로 특정 시점부터 체인을 분기시킬 수도 있고, 자기 입맛대로 거래내역을 추가하는 공격도 할 수 있다. 체인 분기 공격이 사실상 가장 피해가 큰 공격유형이며, 네트워크 가치를 하락시킴으로써 코인 생태계 자체를 무너뜨릴 수 있는 공격이다.
Answer:
Answer:
Answer:
n_a - g_p; EA a가 자신의 모든 잔액 n_a를 보낼 때는 트랜잭션 실행을 위한 gas price g_p가 필연적으로 동반된다. 따라서 온전히 n_a는 보낼 수 없으며 gas price g_p를 차감한 잔액을 전송하게 된다.
Answer:
Answer:
Casper FFG가 어떻게 이더리움 블록체인의 확장성 문제를 해결할 수 있는지 근거를 제시하라.
Answer:
이더리움 블록체인에 대해서 Oracle이 갖는 의미를 설명하고 Oracle Problem에 대해 설명하라.
Answer:
Answer:
이더리움의 PoW체인은 합의 엔진인 이대시(Ethash)에 구현되어 있다. 이대시의 경우 비트코인에 비해 가지는 장점은 ASIC 채굴기가 큰 영향을 발휘하지 못한다는 것이다. 비트코인에서는 연산량만 고려하면 되기 때문에, ASIC을 대량으로 가지고 있는 노드가 네트워크 생태계 자체를 독점할 수 있지만 이더리움에서는 기존의 PoW연산에 메모리 관련 연산을 추가했다.
단순히 SHA256 연산만을 필요로했던 비트코인과는 달리 이더리움은 DAG를 통해 미리 알 수 없는, 할 수 없는 순차적 메모리 연산을 요구하여 ASIC제작을 어렵게 했다. 메모리를 읽고 쓰는 부분에서의 기술 발전은 아직까지 속도가 그리 빠르지 않기 때문에 충분히 효과가 있다.
그러나 만약 메모리 관련 연산이 급격히 빨라지는 기술 발전이 이루어진다면, 이더리움의 PoW 또한 효력을 상실하게 될 것이다.
Answer:
비트코인의 경우 체인이 분기되면서 유효하지 않은 블록이 되어버린 실효(stale)블록에 대해서 따로 보상을 해주지 않는다. 그러나 이더리움에서는 Stale블록이 된 경우에도 보상을 해주는데, 이때의 실효블록을 이더리움에서는 uncleBlock이라 한다.
uncleBlock을 생성한 사람에게도 보상이 주어지고, uncleBlock을 제보하는 행위에 대해서도 보상이 주어진다. 이러한 프로토콜을 GHOST Protocol이라 하며 이더리움의 경우 블록 생성시간이 비트코인에 비해 약 40배빠르기 때문에, 체인이 분기되는 상황이 자주 연출될 수 있다. 이러한 배경 때문에 이더리움에서는 GHOST 프로토콜을 개발했다.
비트코인의 경우 애초에 분기되는 상황이 그리 자주 발생하지 않기 때문에 보상에 대한 매커니즘을 특별히 고려하지 않았던 것이고, 이더리움의 경우 블록 생성시간이 빠르기 때문에 분기가 자주 발생하고 그로 인해 손해를 보는 채굴자들이 네트워크를 떠나지 않게끔 보상정책이 필요했던 것이다.
Answer:
Answer: (by Bookstore3)
Nothing at stake 문제란 이더리움에서 블록체인이 포크가 될 때 발생하는 문제다. 기존 PoS 알고리즘 상에서는 포크가 발생하여 노드가 투표를 할 때, 나눠진 두 블록체인에 모두 투표를 해도 손해를 보게 되는 구조가 아니였다. 결국 둘 다 투표를 해 네트워크가 채택한 블록체인에 대한 보상만 챙기면 되는 구조였다.
이런 문제를 해결하기 위해 Casper에서는 투표를 하는 노드들이 본인의 지분, 즉 돈을 걸고 투표를 하게 만들고, 만약 본인이 악의적으로 투표를 두 체인에 모두 하게 되면 돈을 잃게 되는 알고리즘을 사용한다. 즉, 투표를 잘 못 해도 상관은 없지만, 이중 투표는 방지하겠다는 것이다. 참고로 이런 투표한 사실은 투표를 할 때 본인 키로 서명을 하므로 쉽게 알아낼 수 있다.
그렇다면 여기서 어떻게 본인이 투표를 한 체인이 정직한지 알 수 있을까.
Capser는 블록체인에 Checkpoint라는 지점을 정해놓는다. 해서 각 50번째 블록마다 Checkpoint가 있다면 이런 Checkpoint가 유효한지 투표를 한다. 그럼 투표 노드의 2/3이 인정을 하면 유효한 투표가 되고 그 블록은 일단 Justified가 된다. 그런 다음 다음번 Checkpoint 블록이 다음번 투표를 통해 Justified가 되면, 처음 Justified가 되었던 블록은 Finalized가 되어 완전히 유효한 블록체인이 된다.
즉, 이 Finalized와 Justified 블록들을 잘 따라가며 투표를 하면 의도치 않게 악의적인 블록체인에 투표를 하는 것을 방지할 수 있다.
마지막으로 이 Checkpoint가 50번째 블록마다 라고 해서 매우 긴 시간이라 생각할 수 있을지 모르지만, 이더리움은 한 블록이 약 15초에 생성된다는 것을 고려하면 그렇게 긴 시간이 아니다.
Answer:
Answer: