Incognito Project 8

[Incognito Project] 솔리디티 문법 04 - 변수(Variable)

1. Variable(변수) 1. local(지역변수) - 함수 안에 선언됨. - 블록체인에 기록되지 않음. 2. state(상태변수) - 함수 밖에서 선언됨. - 블록체인에 기록됨. 3. global(전역변수) - 블록체인에 관한 정보를 제공함. contract Lottery is VRFConsumerBase, Ownable { //상태 변수 : 블록에 기록됨. address payable[] public players; address payable public recentWinner; uint256 public randomness; uint256 public usdEntryFee; function doSomething() public { //지역 변수 : 블록에 기록되지 않음. uint i = 456..

Incognito Project 2022.09.25

[Incognito Project] 펀딩 프로젝트 제작 - 유튜브 영상 참고함.

Fundraising.sol 제작하기 - pragma solidity ^0.8.0; 컴파일러 버전을 잠근다. 더 높은 버전으로 했을 경우 코드가 깨질 경우가 있기 때문임 - contract Fundraising {} 클래스 대신 contract 를 사용함. 이때 가지고 있어야 할 프로퍼티는 소유자, 목표 금액, 프로젝트에 기부한 사람들의 목록, 그들의 기부 금액, 기부금 누적 총액, 데드라인이 필요함. 데드라인이 될 때 까지 기부금의 총액이 목표 금액보다 높을 경우 프로젝트의 소유자에게 자금이 감. But 기부금의 총액이 목표 금액보다 낮을 경우 기부한 사람들에게 전액 환불이 됨. 목표 금액은 부호 없는 정수, 음수가 아닌 정수가 될것임. ... 제작 과정 ... 스마트 컨트랙트 배포하기 - 작성된 펀딩..

Incognito Project 2022.09.24

[Incognito Project] 개발 환경 셋팅

1. 개발 환경 셋팅 - MetaMask 설정 - 필자는 이전에 지갑을 생성했으므로 비밀 복구 문구를 입력 후 지갑을 불러옴. EtherScan에 들어가 내 계좌를 붙여넣음. 잔고를 확인할 수 있음. 두번째 계정 생성 후 이더스캔에 계좌를 복붙함. 메타 마스크에서 계정 2 의 세부 정보를 살펴보면 private key 를 확인할 수 있음. 사이트에 들어감. https://rinkeby.etherscan.io TESTNET Rinkeby (ETH) Blockchain Explorer Etherscan allows you to explore and search the Rinkeby blockchain for transactions, addresses, tokens, prices and other activi..

Incognito Project 2022.09.24

[Incognito Project] 이더리움 2.0 전환

이더리움 2.0 은 한 번에 출시되지 않고 총 4단계를 거쳐서 출시됨. 각 단계에서 각각 다른 기능들이 구현될 예정임. 0단계 : 비콘체인 도입(2020.12.01 출시), 새로운 합의 알고리즘(Gasper) 출시에 집중함. Gasper란? - 작업 증명(PoW)에서 지분 증명(PoS)로 전환하기 위한 알고리즘. - Casper FFG 와 LMD Ghost 라는 규칙이 결합된 알고리즘. - 포크(fork) 발생 시 LMD Ghost로 어떤 포크를 선택할지 결정하고 Casper FFG로 블록의 완결성 검증함. 비콘체인이란? - 지분 증명(Pos) 방식의 네트워크로 16,384명 이상의 검증자(노드)가 524,288ETH 이상의 이더를 이더리움의 예금 컨트랙트에 예치함으로써 비콘 체인의 제네시스 블록이 생성..

Incognito Project 2022.09.24

[Incognito Project] 솔리디티 문법 03 - mapping 과 msg.sender

1. mapping(매핑) mapping(address => uint256) public addressToAmountFunded; - "키-값" 구조로 데이터를 저장할 때 쓰는 타입임. addressToAmountFunded[msg.sender] += msg.value; - 매핑값을 읽고 쓰기 위해서는 매핑이름[키] 의 형태로 접근할 수 있음. 2. msg.sender - 솔리디티에는 모든 함수가 이용가능한 전역 변수가 존재함. (솔리디티 전역 변수의 종류에 대해 조사할 필요가 있어보임.) - 그 중 하나인 msg.sender 는 현재 함수를 호출한 사람 (또는 컨트랙트) 의 주소를 가르킴. 솔리디티에서 함수는 언제나 스마트 컨트랙트 외부에서 호출됨. 컨트랙트는 누군가가 컨트랙트의 함수를 호출할 때까지 ..

Incognito Project 2022.09.24

[Incognito Project] 솔리디티 보안 - Keccak256 함수로 난수 생성

블록체인에서 보안은 매우 중요함. 따라서 솔리디티는 Keccak256 이라는 강력한 해시 함수를 내장하고 있음. 참고 : Git의 커밋번호를 생성할 때 쓰는 해시 알고리즘은 SHA-1, Keccak256 은 SHA-3 를 사용한다고 함. (조사가 더 필요할듯) keccak256("aaaab"); //6e91ec6b618bb462a4a6ee5aa2cb0e9cf30f7a052bb467b0ba58b8748c00d2e5 keccak256("aaaac"); //b1f078126895a1424524de5321b339ab00408010b7cf0e6ed451514981e58aa9 - 문자의 끝을 b 에서 c 로만 바꿨을 뿐인데 해시값이 완전히 달라졌음. - C++ 등 다른 프로그래밍 언어에서는 현재 시각 등 추측할 수..

Incognito Project 2022.09.24

[Incognito Project] 솔리디티 문법 02 - 함수

1. 함수 - function 이라는 키워드를 이용하여 함수를 정의할 수 있음. function retrieve() public view returns (uint256){ return favoriteNumber; } 1-1. 함수의 접근자 지정 public & private : - 함수는 기본적으로 public 속성으로 선언됨. - private 을 붙이면 컨트랙트의 외부에서 함수 호출 불가능함. (FundMe.sol에서 Fund() 함수 접근 지정자가 public 인 이유인듯) - 접근 지정자는 매개변수 바로 다음에 정의함. external & internal : - internal 은 private 과 유사하나 자식 컨트랙트는 사용 가능함. - external 은 컨트랙트의 외부에서만 호출됨. (pu..

Incognito Project 2022.09.24

[Incognito Project] 솔리디티 문법 01 - 자료형과 연산

솔리디티(Solidity)란? 이더리움 계열의 블록체인의 스마트 컨트랙트 대부분은 솔리디티로 작성되어 있으며, 계약 지향 프로그래밍 언어임. 자바의 클래스와 매우 유사한 문법을 가지고 있음. - 정적 타입의 언어 - Ethereum Virtual Machine (EVM) 위에서 실행 - 문장의 끝은 세미콜론(;) 우리의 인코그니토 프로젝트의 목표는 스마트 컨트랙트 작성 시 취약점 발생에 유의하며 시큐어 코딩 가이드 라인을 제시하는 것임. 따라서, 스마트 컨트랙트의 작성 및 배포를 테스트 네트워크(Ropsten - 실제 이더리움 메인넷과 유사한 구조)에서 진행 할 것이고 이는 Remix 에서 손쉽게 할 수 있음. https://remix.ethereum.org/ Remix - Ethereum IDE rem..

Incognito Project 2022.09.24