블록체인2021. 7. 4. 12:29

개인적으로 이더리움 노드에 참여해 볼수 없을까? 어려워보이지만 시작은 우선은 쉽다.

(하지만 정상적인 full mode sync를 위해서는 16gb이상, 500gb급 ssd가 필요하다. 사양이 떨어지면 light mode를 사용하자.)

 

 이더리움 노드 서버 혹은 클라이언트인 geth를 다운로드 받아 구동하면 된다. 여기서는 geth 1.10.4 버전 ubuntu linux에서 작동시켰다. 다만, geth는 go언어로 만들어져서 거의 모든 OS를 지원하므로, 다른 OS에서도 아래와 유사한 방식으로 구동할 수 있을 것이다.

 

https://geth.ethereum.org/downloads/

 

Downloads | Go Ethereum

Retrieving packages from release server...

geth.ethereum.org

 

여기서 Geth 1.10.4 Linux 64bit 버전을 다운로드 받자(Tools가 같이 있는 버전을 받아도 좋다. 아래는 geth & tools를 기준으로 한다.) 필자는 Ubuntu 18.04기반으로 작업하였다. 다운로드를 받아 적절한 디렉토리에 압축을 풀면 go로 된 단순한 명령어들을 볼 수 있다.

 

아래는 /work/gethdata에 여러가지 데이터를 저장하고, /work/밑에 프로그램을 압축 푼다고 가정해보자.

 

$ mkdir /work/        #프로그램 설치 폴더 생성

$ mkdir /work/gethdata  #데이터 폴더 생성, 각종 정보 파일과 계좌를 만들때의 정보 등을 담게 된다

$ cd work

$ tar xvfz geth-alltools-linux-amd64-1.10.4-aa637fd3.tar.gz

....

$ cd geth-alltools-linux-amd64-1.10.4-aa637fd3

$ ls

abigen bootnode clef COPYING evm geth puppeth rlpdum

 

이상태에서, 아래와 같이 실행하면 곧바로 이더리움 노드에 참여하게 된다(networkid 1)

단순 기능 확인만을 위한 저사양용 light mode와 일반 안정적인 채굴등을 위한 fast mode두가지 실행 방식을 적어본다.

 

 

$ ./geth --datadir "/work/gethdata"  --syncmode "light" console  #기본 기능만 테스트하기 위해서는 light mode를 추천

혹은

$ ./geth --datadir "/work/gethdata"  console    #fast mode이며 datadir을 지정하지 않으면 ~/.ethereum/에 생성된다.

 

이 datadir의 위치를 바꾸면 모든 것이 리셋되고 다시 해당 datadir을 기준으로 다운받아 작동하게 되니 쉽게 리셋할 수 있다.

 

(다음에는 이렇게 mainnet에 참여하는게 아니라 여러가지 시험을 해볼 수 있는 사설 네트워크를 구성해보자. 이렇게 되면 나만의 이더리움 네트워크를 구성할 수 있다.)

 

아래 console에서 다양한 실제 작업을 할 수 있다. 간단한 명령을 살펴보자.

주소를 몇개 정의한 후 밸런스를 확인하고 계정에 암호를 입력한 후 송금하는 예시이다. 이건 따로 조사를 해 본 후 실행하기를 바란다.

 

> secondary = '0xb98df66662a586461b668e9ab81383d2b0d341da';
> third = '0xfd0e3e0c475a2feddfd681c599721a1b273fa78d';
> balance = web3.fromWei(eth.getBalance(secondary), "ether");

> personal.unlockAccount('0xb98df66662a586461b668e9ab81383d2b0d341da');
> eth.sendTransaction({from: secondary, to: third, value: web3.toWei(4.95, "ether"), nonce:0, gas: 300000});

#sendTransaction의 nonce는 총 출금한 개수다. 처음에는 0, 그 다음에는 1을 붙이자.

 

다만 main net에 제대로 참여하기 위해서는 geth가 전체 blockchain의 block들이 전부 sync(다운로드)되어야 한다.

 

geth 홈페이지에 따르면 4 core / 16gb ram / 500gb 이상의 ssd를 추천사양으로 이야기한다. (필자가 100%정도 sync되었을때 용량이 360GB였다) 모두 sync하는 데에는 2~3일 정도 소요되었다. ssd를 추천하는 이유는 sync를 제대로 하기 위해서는 고속의 I/O가 필요하기 때문이라고 한다. sync여부는 위 geth console에서 아래와 같이 확인 가능하다

 

> eth.syncing

{

  currentBlock: 12780722

  highestBlock: 12780722

  ..

}

이렇게 currentBlock과 highestBlock이 같은 값이면 sync가 100%완료된 상태이다. 그런데 disk I/O가 충분히 빠르지 않으면 이것이 100%sync가 잘 되지 않는다.

 

geth는 내부적으로 fast mode, full mode, light mode 3가지가 존재하는데 디폴트는 fast mode이다. hardware사양이 낮고 적은 용량만 가진 서버에서는 light mode를 확인하여 해당 방식으로 구동하는 것이 가능하다. 10분에 기초 동기화가 되고 300mb정도의 용량만으로도 유지가 가능하다고 한다. 다만 이 light mode는 다른 노드의 도움을 받아야만 정상적인 처리가 가능하여 해당 노드에 의존하므로 처리 속도가 느리다고 알려져 있다. 채굴도 불가능하다. light mode는 geth실행시에 --syncmode "light" 만 추가하면 되어 소형 기기용으로 많이 추천되고 있는 모양이다.

 

$ ./geth --datadir "/work/gethdata"  --syncmode "light" console  

 

 

그리고 용량 문제는 main net에 붙을때만 그렇고 private node를 운영할때는 큰 용량을 필요로 하지 않는다. 마음껏 fast mode/full mode로 하면 된다.

 

그리고 ethereum main net의 상태는 아래 사이트를 통해 지갑 등을 확인할 수도 있으니 비교할시에 참고하기 바란다.

https://etherscan.io/

반응형
Posted by 작동미학
정보이론2021. 3. 28. 09:25

 정보이론 서적에서 언급되는 분야중에 흥미로운 것은 DNA 분야이다. DNA는 정보로 가득차있기 때문이다. 인간의 경우만 놓고 보아도 30억쌍의 ATGC... 배열로 된 유전자 정보를 1개의 세포가 온전히 매우 안정되게 포함하는 셈이고, 1개의 수정란에서 인간의 모든 것이 시작되어 생명을 형성한다.

 

 흥미롭게도 이 관점에서 왜 불로장생이 어려운지에 대해서 다양한 학설이 나왔는데, 아래가 간단히 정리해놓은 글이다.

 

scienceon.hani.co.kr/548962

 

세포 수준에서 일어나는 노화 현상, 그 원인들

[3] 세포 노화의 여러 원인들 인간을 대상으로 ...

scienceon.hani.co.kr

 

 핵심 논리는 이 DNA의 복제와 오류에 있다. 한 개의 수정란에서 시작된 인간의 세포체계는 지속 세포를 복제하여 신체를 만들어가는데 그 오류율이 상당히 낮고 잘못 복제된 DNA를 보정하는 기능까지 보유하고 있다. 그러나 오류율이 낮아도 없는 것은 아니다. 세포가 지속적으로 복제되고 교체되면서 작은 오류라도 점점 더 커지게 마련이다. 모든 세포에 대해 단일의 절대적인 기준을 두고 대사하면서 모든게 처리되지 않는다. 계속 복제되어 가면서 기존의 것과 최대한 같게 하려고 하지만 한번 오류가 발생하면 다시 복제될때는 그 오류가 전파된다. 따라서 생명체 입장에서 이 일관성 유지 문제는 난감한 일이다. 모든 세포가 하나의 원본을 수시로 참조할 수 없다. 그렇다고 DNA서열 전체를 hashing해서 비교해보고 버리지도 못한다.

 

 복제 과정에서 무엇이 정상적인 원본인지 알 수 없으며, 정보가 너무 크기 때문에(30억쌍) 비교하기도 어려운 것이다. 맨 처음 수정란에서 시작된 DNA정보는 오류의 축적을 피할 수가 없는 것이고, 이 부분에서 생명체는 공학적인 완성을 이루지는 못했다.

 

 이 전체적인 DNA의 정보전달 방식이나 변형 가능성은 노화와 암, 진화 모두에 영향을 끼치게 된다. DNA가 더 복잡할수록 더 많은 단계를 거칠수록 오류율이 높아진다. 오류율이 높아지면 오작동이 커지는데, 그 결과 새로 복제된 세포들은 필연적으로 불완전해진다. 더군다나 원본에서 더 멀어질수록(나이가 먹을수록) 더 불완전해진다.

 

 가끔씩은 생명을 진화시키는 돌연변이도, 이 불완전의 메카니즘을 바꾸지는 못했다. 아마도 유전자 시퀀싱 기술을 통해서 노화가 일어나는 단계별로 몸 전체 세포의 DNA 정보 불일치를 추적해나갈 수 있다면 더 자세히 이 과정의 진화를 알 수 있게 될 수 있겠다.

 

 그리고 태아 상태에서의 DNA 정보 변형은 치명적일 수 있다. 그 영향이 이후 복제된 수많은 세포들에 처음부터 영향을 끼치기 때문이다. 여하튼 또한 이러한 변형은 어떤 면에서는 돌연변이가 변화에 적응하여 진화하는 그 과정에도 기여하게 된다. 

 

 정보이론 관점에서 이러한 DNA문제를 파헤치면 여러가지 뜻깊은 사실들을 더 알 수 있지 않을까? 노화나 오류의 진전, 진화 이런 것들이 모두 영향을 받을 수 있다. 사실 그런 의미에서 간단히 이 이론들을 소개해 본 것이다.

 

 좀더 덧붙여보면 향후에 이 DNA 일관성을 외부 공학적인 방법을 사용해 유지할 수 있는가도 흥미로운 미래 이슈가 아닐 수 없다. 최근에 DNA변형된 세포를 찾아내 파괴하도록 하는 암 치료법이 소개되었는데, 이 방법은 변형된 DNA를 하나하나 검출해서 코딩해줘야만 파괴할 수 있다. 불행히도 아직 기술은 어떤 기준 원본 DNA를 만들어서 그것과 변형된 것을 찾아내어 파괴하지는 못한다.

 

www.monews.co.kr/news/articleView.html?idxno=301452

 

'세번째 CAR-T 등장' 4세대 면역세포 치료제 시대 도래 - 메디칼업저버

[메디칼업저버 양영구 기자] 세 번째 키메라항원수용체(CAR) T세포 치료제가 등장하면서 4세대 면역세포 치료제 시대가 앞당겨질 것이란 기대가 나온다.CAR-T 세포 치료제가 CD19 항원을 타깃해 다

www.monews.co.kr

이런 상황인데 만약에 DNA 변형이 전혀 불가능해지도록 하는(변형되면 무조건 파괴하는) 생명공학이 발견되면 어떨까?

그야말로 이론적으로는 불로불사의 시대가 열리게 되겠다(물론 다른 것도 해결되어야 할 수 있겠지만, 여하튼 기초가 되겠다. 오작동이 없어진다). 어느 정도의 기술발전이 되면 미래의 꿈의 기술 후보가 될 수 있지 않을까.

반응형
Posted by 작동미학
순수수학2021. 3. 8. 00:27

짐 홀트의 책 "아인슈타인이 괴델과 함께 걸을때'를 보면 무한을 최초로 정확히 해명한 수학자로 알려진 칸토어가 한 업적이 나온다.

 

첫째는 어떤 두가지의 무한이 서로 본질적으로 같다는 것을 증명하는 방법(무한한 자연수와 유리수가 같다)과 그렇게 같지 않은 더 큰 계위의 무한이 존재하며, 늘 그 무한을 원소로하는 집합을 재창조함으로서 그것이 가능하다는 증명을 했다는 점이다.

 

흥미롭게도 이 관점은 엔지니어로서는 무한이라는 것을 컴퓨터로 구현한다는 관점에서 바라볼 수 있다.

 

사실상 무한이라는 것은 단순히 큰 메모리를 할당하는 것으로는 구현할 수 없다. 이를 테면, 전체를 나타내기 위해서는 메모리가 부족하게 된다. 그래서 흔히들 컴퓨터에서의 변수의 크기는 가질 수 있는 값의 범위를 제한하여 격리한다. 그런데 사실, 잘 설계하면 셀수 없이 늘어나는 것을 담을 수 있게 설계는 할 수 있다(물론 메모리가 충분히 커야하는 것은 어쩔 수 없다)

 

돌이켜보면 0과 1사이의 유리수 값이나, 전체 정수값이나 사실은 본질은 같은 것이다. 왜 그런가 하면 두 무한한 수 체계를 나타내기 위해 구현해야 하는 컴퓨터 코드가 크게 다르지 않기 때문이다.

 

즉 유리수와 정수는 생긴 모양은 다르지만 무언가 특정해야할 하나의 값이고, 같은 비용을 들여서 구현할 수 있다는 말이다. 생긴 것은 다르지만 1:1로 매핑이 가능한 본질적으로 같은 구현으로 해소가능하다.

 

예를 들면, 무한의 수를 나타내는 것은, 앞서의 고정된 메모리를 범위로 간단히 할당하는 것 외에, linked list같이 나타낼 수 있다. 

 

가장 간단하게는 2진수를 무한히 표기할 수 있도록 하는 방법을 생각해보자.

 

2개의 bit를 가지고 그 왼쪽 bit는 더 상위비트가 존재하는지, 오른쪽 bit는 그 자리수의 bit값 형태로 나타내고 필요에 따라 계속 2개의 bit씩 늘려가면 무한한 값을 encoding할 수 있다.

 

실제 예를 들면, 자리수가 정해진 1 0 1 (2)는  11 10 01 (encoded 2, 앞 bit가 다음 자리수의 존재여부) 같은 형태로 나타낼 수 있다는 말이다. 그러면 이 체계는 곧바로 정수와 유리수 모두를 나타냄에 있어서 사실 크게 다르지 않다. 칸토어가 제시한 1:1 대응 방법으로 이름만 붙이면 그만인것이다. 그 두개의 집합은 같은 무한의 체계이며 기계적인 구현이 같다.

 

칸토어의 업적은 따라서 무한의 수 체계를 기계적으로 나타내기 위한 구체적인 구현 동의성을 나타냈다라고 은유할 수 있다. 그렇게 인류는 무한을 기존의 여러가지 추상적인 관점에서, 더 구체화하여 이해했다고 생각한다.

 

반응형
Posted by 작동미학