無知

갈 길이 먼 공부 일기

기술 공부/블록체인 34

스마트 컨트랙트 (13) | Decentralized Identity & Diaspora

Blockchain Technology: IDENTITY, HOPE, AND DIGNITY FOR SYRIAN REFUGEES IN JORDAN December 25, 2021 by John Flores BlockVentures S.A. and Pockbanx honored Houman Haddad with the Excellence in Innovation Award for his use of Blockchain Technology developed and implemented by the United Nations World Food Programme on site at the Syrian Refugee Camp located in Zaatari, Jordan.This blockchain projec..

스마트 컨트랙트 (12) | Diem, Libra, CBDC

Libra, 리브라 - 글로벌 스테이블 코인의 형태로 글로벌 통화와 금융 인프라를 통해 수십억 사람들에게 혜택을 제공하고자 만든 페이스북의 암호화폐. - 현실의 돈의 가치에 묶인 말 그대로 돈의 형태. - 사용자가 실제 화폐를 리브라로 교환하면 이 돈을 다시 인출할 때까지 이를 투자해서 얻게 되는 수익으로 전체 노드의 비용을 보전하고 투자자에게 이익을 돌려준다는 계획. - 페이스북 메신저 앱과 왓츠앱에서 개인 간 거래 및 소매 결제 수단으로 활용 - 리브라는 페이스북을 포함한 28개의 설립 멤버만 검증자로 참여할 수 있는 허가형 블록체인 - 미국 의회: "달러화를 위협하는 화폐가 될 수 있다는 우려... 프로젝트를 중단해 줄 것을 요청" - 페이스북: "돈세탁, 탈세 등의 우려가 완전히 해소될 때까지 출..

스마트 컨트랙트 (10) | NEO, 중국의 이더리움

NEO 개요 및 특장점 네오(NEO, 小蚁币)는 중국 최초의 블록체인 기반 암호화폐이다. 몇몇은 '중국의 이더리움'이라는 별명으로 부른다. 중국어로는 샤오이비(小蚁币, 소의폐, Xiao Yi Bi, xiǎo yǐ bì)라고 부른다. 2014년 중국의 다홍페이(Da Hongfei)가 기존 비트코인과 이더리움의 장점을 결합하여 C# 언어로 네오를 개발했다. 네오는 SHA-256과 RIPEMD160 해시 알고리즘 기반으로 한 위임 프랙티컬 비잔틴 장애 허용(dPBFT; delegated Practical Byzantine Fault Tolerance) 방식의 합의 알고리즘을 따른다. 네오 개발팀은 중국 상하이에 있고, 직원은 약 30명이다. 네오(NEO)는 중국 최초의 암호화폐라는 상징성 덕분에 중국 내에서 ..

스마트 컨트랙트 (9) | Infura

The World’s Most Powerful Blockchain Development Suite CONSENSYS Infura - Our suite of high availability APIs and Developer Tools provide quick, reliable access to the Ethereum and IPFS networks so you can focus on building and scaling next generation software. - Go Ethereum 같은 이더리움 클라이언트를 설치하는 대신 간단히 Ethereum network에 연결해주는 서비스 - DApp을 개발할 때마다 이더리움 클라이트를 설치해야 하는 번거로움을 해결해 주는 서비스 - 간단한 API를 통해서 ..

스마트 컨트랙트 (8-2) | Truffle 프레임워크

1. 트러플 프레임워크란 - 스마트 컨트랙트의 개발, 테스트, 배포 작업을 돕는 프레임워크 - 가나슈, Ganache는 개발용 이더리움 네트워크 생성 프로그램 - 드리즐, Drizzle은 디앱 프론트엔드 작성 지원 라이브러리 A world class development environment, testing framework and asset pipeline for blockchains using the Ethereum Virtual Machine (EVM), aiming to make life as a developer easier. -truffle docs- 2. Truffle Tutorial (Source : https://trufflesuite.com/docs/truffle/quickstart/)..

스마트 컨트랙트 (8) | DApp

1. David Johnston이 정의한 Dapp Everything that can be decentralized, will be decentralized. David A. Johnston, JOHNSTON'S LAW http://www.johnstonslaw.org/ A. DApp 정의 ) " DApp은 컴퓨터 프로그램의 종류" (1) 어플리케이션은 오픈 소스이고, 자율적으로 운영되며, 토큰을 과반 이상 점유하는 세력이 없어야 한다. (2) 알고리즘을 기반으로 토큰을 생성해 어플리케이션의 사용 및 보상 지급에 활용한다. (3) 어플리케이션의 개선 목적으로 다수결에 따라 프로토콜의 변경을 결정한다. - DApp = 컴퓨터 프로그램 - 토큰 = DApp 프로그램 사용 수단. DApp 사용자 참여 활성화를..

스마트 컨트랙트 (7) | 보안성을 갖춘 컨트랙트 작성법

1. 이더리움 내 모든 데이터는 공개되어 있음을 명심하자 - private variable로 선언되었더라도, getStorageAt 함수를 통해 해당 컨트랙트의 변수를 읽어낼 수 있다. - 구체적으로는 상기 함수를 통해 컨트랙트 내 변수가 인코딩된 값을 받게 되는데, 데이터타입에 따라 복잡도는 다를 수 있어도 충분히 해석할 수 있다. 2. 이더리움 송금은 transfer method를 사용하자 * 송금 방법 1 : address.send(value) - 송금 실패 시 false만 반환하고 exception을 발생시키지 않음. * 송금 방법 2 : address.transfer(value) - 송금 실패 시 exception을 발생시키고 중단됨 - 2300 가스만 보내서 실행되므로 컨트랙트의 무한 호출을 ..

스마트 컨트랙트 (6) | 보안 : 해킹 및 버그 사례

해킹 및 버그 사례 해당 내용은, 블록체인 및 스마트 컨트랙트 분야에서 코드 및 시스템의 안정성과 보안, 호환성 등의 문제가 얼마나 중요한 사안인지를 체감할 수 있는 현실 사례들의 모음이라고 보면 된다. As many supporters argue, bugs are to be expected on any new platform. However, in ethereum, code issues have proven uniquely hazardous, since its smart contracts are supposed to be 'immutable' (that is, they can't be changed after the fact), including any and all errors. The most no..

스마트 컨트랙트 (5-7) | Solidity(솔리디티) 라이브러리, Libraries

1. Libraries - 솔리디티에서 라이브러리는 한번 설치되어 여러 다른 contract들에 의해서 사용. - 따라서, 동일한 코드가 반복해서 이더리움 네트워크에 설치되는 것을 방지. - 라이브러리 함수는 contract 메소드 호출과 유사하다 - 라이브러리는 자신의 storage를 갖지 못한다 - 라이브러리는 이더를 소유할 수 없다 - 라이브러리는 state variable을 가질 수 없다 - 라이브러리는 상속 관계에 있을 수 없다 - 라이브러리는 fallback 함수를 가질 수 없다 - 라이브러리는 payable 함수를 가질 수 없다 pragma solidity >=0.4.0 =0.6.0 bool) flags; } library Set { // Note that the first parameter..

스마트 컨트랙트 (5-6) | Solidity(솔리디티) Error Handling

Error handling require revert assert Use when control flow is simple control flow is complicated control flow is simple Check Pre-condition Pre-condition Post-condition Returns Gas Unused Return Return Does not Return - 솔리디티에서는 exception 발생 시 현재까지의 모든 transaction이 중단되고 transaction 이전 상태로 돌아간다. exception을 발생시키기 위한 함수 1. require 주어진 조건을 검사해서 이를 만족시키지 못하면 exception을 발생시킨다. 남은 gas는 반환된다. // require(..

스마트 컨트랙트 (5-5) | Solidity(솔리디티) Contracts, Inheritance, Interface

1. Contract Contracts can be created “from outside” via Ethereum transactions or from within Solidity contracts. IDEs, such as Remix, make the creation process seamless using UI elements. One way to create contracts programmatically on Ethereum is via the JavaScript API web3.js. It has a function called web3.eth.Contract to facilitate contract creation. When a contract is created, its constructo..