기본 입출력 관련 패키지콘솔에 출력하기 위해 사용한다fmt.Print()기능콘솔에 값을 출력특징인자가 2개 이상일 경우 띄어쓰지 않고 출력fmt.Println()기능콘솔에 값을 출력특징인자가 2개 이상일 경우 띄어쓰고 출력,자동 개행fmt.Printf()기능형식을 지정
웹 개발클라우드 컴퓨팅 시스템 및 다중 플랫폼 애플리케이션블록체인 코어 및 서비스 개발DevOpsCI/CD라이브러리를 패키지로 관리외부 패키지를 설치, 삭제, 관리하기 위한 모듈 관리 유틸리티 제공go mod 명령어go mod init모듈 초기화 실행기존 go.mod
특징길이가 고정되어 있다.(정적)값 타입복사하여 내용을 전달한다.인덱스를 통해 접근 가능0부터 시작하는 인덱스를 통해 접근할 수 있다.정적사용 방법var 배열명 길이자료형속성저장 데이터타입 정보순서 정보size 정보(len)특징길이가 가변적이다. 동적으로 늘어난다.(동
특징do-while, while 문이 없다.for문만을 사용한다.배열의 경우 for 문과 함께 range문을 사용할 수 있다.사용 방법for 초깃값; 조건식; 변화식 {}for 인덱스, 값 := range 배열 {}무한 루프주의괄호 위치 중요괄호가 없으면 안된다.타언어
동시성을 구현할 때 다른 언어의 스레드 등의 방식과는 차별화된 방법특징독립적으로 실행, 동시에 실행되는 내장함수동일한 주소 공간에서 다른 고루틴과 동시에 실행 가능가볍지만 스택 공간 할당보다 비용이 다소 큼(스택 지속 증가 후 힙 영역 할당)타 언어의 사용하는 쓰레드(
메인 스레드에서 분산처리 시킨 작업을 다른 여러개의 스레드에서 분산하여 동시에 처리한다.작업의 순서와 상관 없이 독립적이지만 유사한 여러개의 작업을 처리할 때 사용한다.필요한 이유: 여러개의 작업을 처리할 때 성능과 반응성을 좋게 하기위함 이는 곧 최적화와 관련이있다.
일반적인 객체지향 언어인 JAVA, C++등과 달리 class, inheritance 등을 지원하지 않는다. 하지만 sturct를 활용하여 객체를 구현하고, channel을 통해 객체 간 통신(상호 작용)하며 embedding을 통해 컴포지션이 가능하다는 점에서 충분히
핸들러 :HTTP 요청 URL이 수신됐을 때 그것을 처리하는 함수 또는 객체를 의미사용 방법HandleFunc() 함수를 통해 등록할 수 있다. \- http.Handler 인터페이스를 구현한 객체를 등록하고 해당 객체의 인터페이스인 ServeHTTP() 메서드를
Tucker Go 언어 프로그래밍 예제를 통해 학습하였습니다. http 패키지로만 구성되어 있는 예제를 Gin 패키지 이해도를 위해 모두 변경하여 만들어봤습니다.Gin 패키지에 대한 이해도를 높이기 위함기본적인 CRUD 학습BackGogin-gonicTesting To
mongo(https://pkg.go.dev/go.mongodb.org/mongo-driver/mongo특징NoSQLDocument 형식의 데이터베이스JSON과 유사한 형식필드-값 형태여러 Document를 컬렉션(Collection)이라는 그룹으로 묶어서 관
GitHub - swaggo/swag: Automatically generate RESTful API documentation with Swagger 2.0 for Go.(https://github.com/swaggo/swag특징작업, 개발 내역 API의 기능
애플리케이션을 구축하는데 “어떻게 나눌 것인가”에 대한 해답 중 하나로 사용되는 설계 패턴사용되게 된 이유동일한 파일에서 관리하였으나 효율적으로 관리하기 위함관리 및 디버깅이 용이함특징주로 웹 애플리케이션에서 사용데이터에 관련된 내용데이터와 비즈니스 로직을 관리앱이
5개의 블록체인이 있다면.. 서로 이런식으로 구성되어 있다.A BlockChain Hash = Data.. + “ ”B BlockChain Hash = Data… + A BlockChain HashC BlockChain Hash = Data… + B BlockChain
기존 프로그램에 문제가 있다.main함수에 모든 것을 작성하였으며하나의 함수에서 블록을 생성하고블록을 해시하고새로운 블록을 추가하는 등코드를 리펙토링하고 sington을 적용해본다.소스코드main.goblockchain/blockchain.go소스코드main.gobl
TOML v0.5.0toml(https://pkg.go.dev/github.com/pelletier/go-tomlGitHub - pelletier/go-toml: Go library for the TOML file format명확한 의미를 갖으며, 읽기 쉬운
golang으로 데이터를 다루다 mongoDB의 id 값 다루는 과정 중 정리해두면 좋을 것 같아 작성하게 되었습니다.Collection에 데이터를 생성하면 ObjectId가 자동으로 함께 생성된다.함수 해당 함수를 사용하면 string 값을 받아 ObjectID로
소스 코드main.go실행 결과
소스 코드main.goblockchain/blockchain.go실행 결과기존 .html 파일을 .gohtml 파일로 수정css는 해당 mvp.css 사용소스 코드main.goblockchain/blockchain.gopages/add.gohtml다음에 진행pages/
인터넷 상에 있는 모든 사람들과 동일한 데이터를 가지는 것특징누구나 데이터를 추가할 수 있다.데이터는 한번 추가되면, 수정하거나 삭제할 수 없다.데이터는 블록체인 네트워크에 있는 모든 사람들이 함께 관리한다.데이터를 저장하는 공간트랜잭션들을 담은 거래 기록의 집합특징블
/add 페이지 get 호출 시 보여줄 화면/add 페이지에서 블록 데이터 추가 시 /home으로 리다이렉션 진행추가된 블록 데이터 home template에 렌더링 시켜주기소스 코드main.goadd.gohtmlhome.gohtml실행 결과메인 화면Method : G
하나의 데이터베이스 관리 시스템(DBMS, Database Management System)으로 여러 CPU에 연결된 저장장치를 제어하는 형태의 데이터베이스물리적으로는 분산되어 있지만 논리적으로는 하나인 것처럼 사용하는 데이터베이스각 노드들은 네트워크를 통해 연결된다.
POST블록 생성 및 추가하기GET모든 블록 가져오기소스 코드main.go실행 결과모든 블록 가져오기GETURL : /blocks블록 생성 및 추가하기POSTURL : /blocks추가된 블록 확인하기GETURL : /BlocksNewServeMux로 새로운 Mux를
암호화를 할 때의 키와 복호화를 할 때의 키가 같은 것을 대칭키라고한다.암호 방식하나의 키를 암호화하여 암호화한 데이터와 키를 함께 송신한다.이를 받은 사람은 동봉된 키를 사용해 암호화된 데이터를 복호화한다.블록 암호 방식데이터를 미리 정해둔 사이즈로 잘라 청크(Chu
os.Args CLI에서 사용된 문자열 배열을 리턴합니다. 첫번째 인자는 실행프로그램의 이름 소스 코드실행 결과go run main.go 입력 시go run main.go explorer 입력 시go run main.go rest 입력 시Flag를 여러개 사용할 때
비트코인화폐 시스템 특화튜링 불완전어떤 사용자의 트랜잭션에 있는 UTXO를 확인하여 이중지불이 아니면 정상적인 거래로 판단한다PoW이더리움범용 플랫폼튜링 완전EVM트랜잭션에 있는 State 변화를 EVM이라는 환경에서 실행 후 확인이 가능하면 정상적인 거래로 판단한다.
bolt.db로 생성한 db파일이 있어야한다.boltbrowser(https://pkg.go.dev/github.com/br0xen/boltbrowser@v0.0.0-20210531150353-7f10a81cece0설치사용 방법실행 결과터미널에 boltbrow
컴퓨터가 풀기는 어렵지만 검증하기는 쉬운 방법n개의 0으로 시작하는hash를 찾도록 하자n개는 Difficulty에 의해 결정된다.네트워크가 Client의 해시의 시작이 n개의 0으로 되어있는지 검증한다.시간의 흐름에 따라 Difficulty 값을 바뀌도록 한다.Ex
니모닉(Mnemonic)이란 결정적 지갑에서 난수 12개의 영단어로 인코딩한 영단어 그룹으로, BIP-39에서 제안되었습니다.암호화폐 지갑은 비대칭키 암호 방식을 사용합니다. 이때 공개키와 개인키(=비밀키)가 사용이 되는데, 이 개인키를 사람이 쓰기 편하게 만들어진 것
네트워크 : difficulty의 값만큼 0의 개수를 증가시켜 난이도를 어렵게 만든다채굴자 : nonce 값을 변경해가며 0의 개수가 맞는 것을 찾아낸다.소스 코드main.go실행 결과difficulty가 2일 때227번만에 찾았다.difficulty가 3일 때1028
비트코인은 UTXO를 이용하여 트랜잭션을 만든다.TxTxIn\[] : 거래를 실행하기 이전에 내 주머니에 있는 돈TxOut\[] : 거래가 끝났을 때 각각의 사람들이 갖고있는 액수만약 5천원을 주고싶은데 1만원 지폐로 가지고 있을 경우채굴자(코인베이스의 거래)가 코인을
BlockChain_study/exam38 at main · FDongFDong/BlockChain_study아직 확정되지 않은 거래내역을 보관하는 곳→ 아직 Confirm 받지 않은 Transaction들이 들어가는 곳소스 코드blockchain/transaction
클레이튼 생태계 및 논리적 서브 네트워크 (CCN, ENN, SCN)엔드포인트 노드(EN)를 통해 제출된 트랜잭션을 확인하고 실행하는 코어 셀(CC, Core Cell)로 구성된다. CCN은 네트워크 전체에서 블록을 생성하고 전파한다.ENN은 주로 트랜잭션을 생성하고,
서명과 검증부터 알고가자메세지를 Hash한다.키 페어를 생성한다.공개키(Public Key)비공개키(Private Key)로 이루어져 있다.서명을 만들어낸다.1번에서 만든) Hash된 메세지 + 2번에서 만든)Private key = 서명ecdsaGenerateKey(
하나의 단위블록체인에서 노드는 트리구조로 이루어져 있다.트랜잭션을 제안하고 검증할 수 있으며합의를 이루고채굴을 수행하기도 한다.계정의 역할도 하므로 프라이빗 블록체인 또는 폐쇄형 블록체인 네트워크에서는 계정 역할의 노드가 필요하다.개인 키와 공개 키를 관리하고 거래에
블록체인에서 채굴이 무엇인지 설명할 수 있다. 블록체인 네트워크에 노드로 트랜잭션을 검증하여 분산원장을 기록하고, 보상으로 암호화폐를 얻는 것을 뜻하며 땅을 파서 광물따위를 캐내는 행위에서 유래 채굴 노드가 무슨 일을 하는지 이해할 수 있다. 비트코인을 예시로.
블록체인 네트워크에 호스팅되고 실행되는 프로그램이다.조건을 지정해두고, 해당 조건이 충족되면 미리 정해둔 계약을 이행하는 방식으로 코드를 작성한다.1994년 닉재보(Nick Szabo)에 의해 만들어졌다."계약 조건을 실행하는 전산화된 트랜잭션 프로토콜"은 "일반적인
test는 javascript 기반 테스트 프레임 워크인 mocha를 사용한다.기본 구조기본적으로 account0으로 contract를 배포한다.describe테스트들을 구분짓고 테스트에 대해 설명하는 함수.주로 Object 명이나 function 명을 작성한다.des
name()symbol()decimals()totalSupply()transfer()allowance()approve()transferFrom()transfer(to, amount)내가 to에게 amount만큼 금액을 보내는 함수transferFrom(from, to,
토큰 발행은 컨트랙트를 발행한 owner만 실행할 수 있도록 하기 위함컨트랙트 생성 시에 컨트랙트 생성자를 owner로 만들기 위함발행 함수는 권한을 가진 사람만 해당 함수를 호출 할 수 있도록 만들어야하기 때문에 modifier를 사용한다.컨트랙트 소유자의 토큰의 수
파일이 위치한 정보 및 파일의 정보들이 저장된 URImetadata.json 파일이 json 형태로 저장되어있으며 이미지의 URI와 관련 속성들이 함께 저장되어 있다.직접 블록에 이미지, 동영상 관련 정보를 넣게되면 용량도 크고 블록체인에 무리를 주게되기에 대안으로 파
DApp을 만들어 봄으로써 전체적인 코드 작성 및 개발의 흐름 파악컨트랙트들 간의 상호 작용 이해랜덤값 생성에 대한 이해truffle, remix 등 다양한 개발툴에 대한 이해다양한 개발 패턴들 숙달테스트 코드 작성 능력 습득블록체인을 활용한 겜블링 DApp게임 중개자
Public KeyPrivate Key
스마트 컨트랙트를 컴파일하게 되면 ABI code와 Byte Code가 생성됩니다.스마트 컨트랙트 코드에 대한 설명이 담긴 JSON 형식의 인터페이스스마트 컨트랙트 코드에 있는 함수에 대해 정의하고, 컨트랙트에 있는 함수에 어떤 인자를 넣어야하는지, 어떤 데이터가 반환
블록을 참조하여 실제로 블록에 기록된 트랜잭션을 확인해야 합니다. 이러한 작업을 사용자가 직접적으로 제어하지 않고, 백그라운드에서 돌면서 자동으로 해주는 프로그램을 블록체인 Daemon(데몬)이라고 합니다.블록체인 Daemon으로는 전체 모든 트랜잭션과 블록을 수집할
탈중앙화 금융(DeFi) | ethereum.org매수자가 토큰을 구매할 수 있도록 물량을 제공하는 사람호가창 없이 거래 토큰의 가격을 결정하는 방식AMM은 디지털 자산의 가격을 수학적 공식을 이용해 산출한다.CPMM, CMMM 등LP Token, Slippage, I
Factory 배포A Token 컨트랙트 배포(100개 토큰)B Token 컨트랙트 배포(100개 토큰)A Token - Liquidity 컨트랙트 배포1번에서 배포한 Factory 컨트랙트의 createPool(2번에서 배포한 A Token 컨트랙트) 함수를 이용해