728x90 반응형 SMALL 블록체인22 [개발 환경설정-4] 블록체인 연결하기 - 메인넷, 테스트넷 동기화 컨트랙트를 배포하거나 네트워크 트랜잭션을 실행하려면 사용할 각 네트워크에 전체 노드를 동기화 해야합니다. 주로 이더리움 메인넷 (mainnet)과 링키비 테스트넷(testnet)의 두 네트워크를 동기화 한다. 테스트넷은 이더리움 프로토콜을 실행하지만 토큰이 없는 네트워크라고 할 수 있습니다. 가스 비용을 지불하지 않고도 코드, 배포, 트랜잭션을 테스트하는데 유용합니다. 메인넷에서 반복 테스트를 수행하려면 상당한 비용을 써야 한다.= 진짜 돈을 사용해야한다. 네트워크 동기화 Geth에서는 세 가지 모드로 네트워크 동기화를 진행할 수 있습니다. 각각 라이트(Light) 풀 (Full) 아카이브 (archive) 모드, 3개가 있습니다. 라이트 노드 블록헤더를 동기화 하지만 트랜잭션을 처리하거나 상태 트리를 .. 2023. 1. 30. [자주사용] 우분투 curl 명령어 url로 데이터를 전송해 서버에 데이터를 보내거나 가져올때 사용한다. 노드JS 버전 높은거로 변경하려다가 curl 명령어를 쳤는데 오류만 났다. 보니까 curl 명령어가 사용될 수 있도록 설치를 해주어야한다. sudo apt update 먼저해주고 sudo apt install curl 테스트 이제 curl 명령어를 써보자 정상적으로 명령이 실행된것같다. 2023. 1. 27. [블록체인 개념-7] 이더리움 내의 프로그램, 솔리디티(Solidity), 해킹방지, 이더리움 게임 블록체인 개발 시 자주 사용되는 개념입니다. 다른 백서나 글에서 자세히 나오지만 간단하게 이해만 하고 지나가고 싶으신 분들에게는 도움될 수 있을것같아서 정리했습니다. 1. 이더리움 내의 프로그램 이더리움 내의 프로그램은 상호 작용하는 하나 이상의 스마트컨트랙트로 구성된다. 스마트 컨트랙트는 다른 스마트컨트랙트의 기능을 호출 할 수 있습니다. 개별 컨트랙트는 기존의 프로그램언어에 존재하는 클래스와 유사합니다. 스마트 컨트랙트는 EVM 어셈블러, 솔리디티, LLL (Low-Level Lisp), 서펀트 등의 언어로 작성할 수 있습니다. 모든 컨트랙트는 결국 EVM 어셈블리 바이트 코드로 컴파일 됩니다. 여러 언어 중 솔리디티가 가장 일반적으로 사용되는 언어이며, 주변에서도 솔리디티를 주로 사용합니다. 물론 .. 2023. 1. 25. [블록체인 개념-6] Web3 , 비트코인 vs 이더리움 , 주소와 키 쌍 , 컨트랙트와 외부 계정 블록체인 개발 시 자주 사용되는 개념입니다. 다른 백서나 글에서 자세히 나오지만 간단하게 이해만 하고 지나가고 싶으신 분들에게는 도움될 수 있을것같아서 정리했습니다. 1. Web3 블록체인 기술을 초기에 채택한 많은 사람은 인터넷의 새로운 시대, 웹 3.0을 열 수 있는 가능성에 모두 흥분했었습니다. 웹 1.0 웹 1.0은 인터넷의 초기 단계를 가리키는 용어로, 당시의 인터넷은 주로 상품을 판매하고, 정보를 게시하는 데 사용하는 플랫폼이었습니다. 웹 2.0 웹 2.0은 소셜 네트워크와 인터넷 공동 작업을 도입했습니다. 페이스푹, 플리커, 인스타그램 등의 사이트는 사용자가 제작한 콘텐츠를 중앙 서버에 담고 프런트 엔드로 게시했습니다. 웹 3.0 웹 3.0은 더 이상 중앙 권력이 검열을 수행하거나 사용자 데.. 2023. 1. 25. [블록체인 개념-5] 상태 트리 - What is State Trie 상태트리란? 이더리움의 기본 데이터 베이스는 Keccak256 해시 키를 32byte 값에 매핑하는, 키/값 쌍으로 구성된 상태트리이다. 솔리디티의 데이터 구조는 하나 이상의 상태 트리 항목을 사용해서 프로그래밍에 도움되는 프로그래밍 구문을 생성한다. 간단한 자료형은 32byte 이하이며, 하나의 상태트리 항목에 저장할 수 있다. 배열과 같은 복잡한 자료형에는 여러 상태 트리 항목이 필요하다. Keccak256 해시는 256 비트 길이이므로, 이더리움 상태 트리는 최대 2,245개의 고유 항목을 저장하도록 설계되었다. 그러나 약 280개의 항목 이후에는 해시 충돌로 인해 트리의 사용에 상당한 제약이 발생한다. 어느 쪽이든, 이것은 현재 전 세계에 존재하는 것보다 많은 디스크 공간이므로 개발자는 주한정의 .. 2023. 1. 23. [블록체인 개념-2]채굴이란? - What is mining 채굴(Mining) 이더리움 네트워크의 채굴 노드는 이더해시(Ethash) 라는 독자적인 작업 증명 알고리즘을 사용해서 블록을 생성하고자 경쟁합니다. Ethash 알고리즘에 대한 입력은 논스(Nonce) 라고 하는 임의로 생성된 숫자를 포함하는 블록헤더이며, 그 출력이느 32byte 의 16진수이다. 논스를 수정하면 출력도 수정되는데, 이는 예측할 수 없는 방식으로 수정됩니다. 블록과 난이도 네트워크가 채굴된 블록을 수용하려면 블록헤더에 대한 Ethash 출력이 네트워크 난이도보다 적어야 하며, 또 다른 32byte 의 16진수가 채워질 대상으로 사용됩니다. 목표 난이도를 상회하는 블록을 브로드캐스트하는 모든 채굴자는 블록 보상을 받습니다. 블륵 보상은 블록에 코인베이스 트랜잭션을 포함시킴으로써 부여됩니.. 2023. 1. 23. [블록체인 개념-1] 블록(Block)이란? - What is Block? 블록이란? 블록체인은 순서가 정렬된 블록으로 구성된다. 블록은 메타 정보를 담은 헤더(Header)와 일련의 트랙잭션으로 구성된다. 블록은 채굴자가 채굴해서 생성되고 네트워크의 다른 노드로 브로드캐스트된다. 모든 노드는 일련의 합의 규칙에 따라 수신된 블록을 확인합니다. 합의 규칙을 충족하지 못하는 블록은 네트워크에서 거부됩니다. 포크 포크(Fork) 는 네트워크가 합의 규칙을 두고 경쟁하는 둘 이상의 집합으로 나눠질 때 발생하는 이벤트 입니다. 대개 이더리움의 공식 클라이언트 프로그램인 Geth라는 소프트웨어가 업데이트될 때 포크가 발생합니다. 소프트 포크 새로운 규칙 집합이 이전 규칙의 하위 집합일 때 발생합니다. 여전히 이전 규칙을 사용하는 클라이언트도 새 규칙을 사용해 클라이언트가 만든 블록을 거.. 2023. 1. 23. Solidity 구조체 1. 구조체 개요 정의 구조체 : 서로 다른 자료형을 하나의 이름으로 묶는 자료형 이더리움의 데이터베이스를 활용하기 위해서 구조체 정의 및 구조체 배열 사용 필요 표현 구조체 표현 구조체 이름 [ ] 배열이름 ; 구조체 이름 [ ] public 배열이름; 배열과 유사하다고 보면된다. Struct 구조체 이름 { 자료형 변수명; .. 자료형 변수명; } 즉 구조체 이름 [ ] 배열이름 구조체 개요 구조체 배열 표현 일반적 : 구조체 변수 선언 후 값 삽입 배열 : .push 사용, 이 경우, 대다수 동적배열을 사용하기 때문에 배열의 맨마지막에 넣어주기위해 사용한다. 그래서 구조체 배열을 표현하는 방법으로는 방법 1: 구조체 이름 [] 배열이름; 구조체이름 변수 = 구조체이름(맴버값들); 배열이름.push(.. 2021. 11. 22. Solidity - 배열 및 데이터삭제, 타입 캐스트 1) 개요 배열 자료형이 같은 데이터를 같은 이름으로 묶은 자료 구조 종류 정적 배열 배열 요소의 크기를 지정 예) uint[5] test; 동적 배열 배열 요소의 크기를 지정하지 않고 동적으로 변환 uint[] test; PUBLIC 배열 동적배열의 경우, 다른 계정에서, 배열을 읽을 수 있도록 지정 예) uint[] public test; 자료형을 쓰고 [ ] 를 이용해서 배열을 만들 수 있다. 2) 표현 자료형[크기] 배열이름 ; 자료형[] 배열이름; 자료형[] public 배열이름 예제 //SPDX-License-Identifier: UNLICENSED pragma solidity ^0.6.10; contract Arrayval { uint [5] test1; //정적배열 uint [] test2.. 2021. 11. 15. Solidity 함수의 타입제어 : view와 pure 함수의 호출범위 public 내부 계약 또는 외부 계약 호출 시 사용 가능 internal 내부 계약 또는 상속 계약에서 호출 가능 V 아무것도 적지 않으면 기본적으로 internal임 (default) private 계약 안에서만 호출 가능 external 외부 계약 호출 시에만 사용 가능, 같은 함수 내부에서는 호출 불가 함수의 호출 범위를 Visibility 라고 한다. Visibility를 설정하지 않으면, "경고" 가 나오면 internal로 처리됨! //SPDX-License-Identifier: UNLICENSED pragma solidity ^0.6.10; contract Callsize { uint a = 1; uint b = 2; function test() view returns (u.. 2021. 11. 11. Solidity 함수의 입력 매개변수와 반환값 1) 입력 매개변수 입력 매개변수가 없는 경우 : function 함수명( ) ... 반환값이 없는 경우 function 함수명() public view{ ... } 반환값이 있는 경우 function 함수명 () public view returns (반환값의 자료형){ ... return 반환값; } 입력 매개변수가 있는 경우 : function 함수명( 자료형 변수이름, ... ) ... 반환값이 없는 경우 function 함수명(자료형 변수 이름, ...) public view { ... } 반환값이 있는 경우 function 함수명(자료형 변수 이름, ...) public view returns (반환값의 자료형){ ... return 반환값 ; } 2) 반환값의 종류 1. 정수 2. 실수 3. .. 2021. 11. 11. Solidity 데이터타입과 연산자(3) 연산자 연산자종류 총 6개 종류의 연산자가있다. 기존의 연산자와 유사하다. 예를들어 대입 연산자는 a = a + 1 를 a+=1 로 함축해서 대입시키는 것이다. 이 6가지에 대해 설명하겠다. 1. 산술연산자 + 더하기 - 빼기 * 곲하기 / 나누기 % 나머지 ** 지수연산 예제 //SPDX-License-Identifier: UNLICENSED pragma solidity ^0.6.10; contract Plus { function plus() public pure returns (uint) { uint a = 1; uint b = 2; return a + b * 2; } function rest() public pure returns (uint) { return 4 % 3; } } 산술연산을 통해 ui.. 2021. 11. 5. 이전 1 2 다음 728x90 반응형 LIST