일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- nodejs
- API
- Klaytn
- 서비스체인
- 웹
- web3.js
- javascript
- Solidity
- 프레임워크
- vue
- Web
- blockchain
- 제어자
- web3
- frontend
- 이더리움
- 블록체인 구조와 이론
- 솔리디티
- 접근제어자
- Geth
- vue.js
- ethereum
- 클레이튼
- geth구현
- 블록체인
- 프론트엔드
- kas
- SCN
- Klaytn API Service
- 앵커링
- Today
- Total
목록ethereum (13)
BloCCat
payable - 가상화폐로 접근하기 위한 키워드, 이더 코인을 전송하는 smart contract를 작성하기 위해서 반드시 사용 * payable을 작성한 함수에서만 이더를 보낼 수 있기 때문에 smart contract 외부에서 해당 함수들 중에 코인을 전송 시키는 함수를 사용하려 한다면, 해당 함수는 반드시 payable 키워드가 함께 작성된 함수이어야 한다. contract OnlineStore { function buySomething() external payable { // 함수 실행에 0.001이더가 보내졌는지 확실히 하기 위해 확인: require(msg.value == 0.001 ether); // 보내졌다면, 함수를 호출한 자에게 디지털 아이템을 전달하기 위한 내용 구성: transf..
함수 제어자는 인수 또한 받을 수 있다. // 사용자의 나이를 저장하기 위한 매핑 mapping (uint => uint) public age; // 사용자가 특정 나이 이상인지 확인하는 제어자 modifier olderThan(uint _age, uint _userId) { require (age[_userId] >= _age); _; } function driveCar(uint _userId) public olderThan(16, _userId) { // 필요한 함수 내용들 }
Gas : Dapp이 사용하는 연료 Dapp 함수를 호출할 때마다 (=트랜잭션이 발생할 때마다) 사용자가 내야하는 실제 돈(이더) 가스를 아끼기 위한 코딩법 1. 구조체 압축 struct 안에 여러개의 uint 타입의 데이터가 있다면 더 작은 크기의 uint를 쓰자. 그 변수들은 더 적은 공간을 차지하기 위해 스스로 메모리를 압축하여 사용한다. struct NormalStruct { uint a; uint b; uint c; } struct MiniMe { uint32 a; uint32 b; uint c; } // `mini`는 구조체 압축을 했기 때문에 `normal`보다 가스를 조금 사용한다 NormalStruct normal = NormalStruct(10, 20, 30); MiniMe mini =..
* 꼭 알고 넘어가야 할 것 1.컨트랙트 불변성 컨트랙트는 변하지 않는다. 즉 한번 블록체인에 배포된 컨트랙트는 수정/업데이트를 할 수 없다. 반대로 이런 특성때문에 함수 호출에 대한 의심또한 할 수 없다. 2. 외부 의존성 내 컨트랙트에 외부 컨트랙트 주소(CA)값을 인터페이스 개체에 직접 넣어 사용하게 되면 외부 컨트랙트가 문제가 생길시 내 컨트랙트(함수)에도 영향을 끼치게 된다. 따라서 이런 부분을 방지하기 위해 문제가 생기면 문제가 생긴부분만 바꿔주는 함수를 만들어 값을 저장한다. (SET METHOD) 변경 전 address ckAddress = 0x06012c8cf97BEaD5deAe237070F9587f8E7A266d; KittyInterface kittyContract = KittyInte..
생성자 : 컨트랙트랑 같은 이름으로 정의하거나 constructor() 로 정의 modifier : 함수 제어자, 다른 함수들에 대한 접근을 제어하기 위해 사용되는 일종의 유사 함수. /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { address public owner; event OwnershipTransferred(address indexed previousOwner, address in..
1. 매핑 기본적으로 키-값(key-value) 저장소로 데이터를 저장하고 검색하는 데 이용 // 금융 앱용으로, 유저의 계좌 잔액을 보유하는 uint를 저장한다: mapping (address => uint) public accountBalance; // 혹은 userID로 유저 이름을 저장/검색하는 데 매핑을 쓸 수도 있다 mapping (uint => string) userIdToName; 2. msg.sender : 함수를 호출한 eoa(계정주소) 혹은 ca(컨트랙트 주소) mapping (address => uint) favoriteNumber; function setMyNumber(uint _myNumber) public { // `msg.sender`에 대해 `_myNumber`가 저장되도록..
1. 함수 선언 function eatHamburgers(string _name, uint _amount) { } parameter명은 _를 붙이는 것이 관습 2. public / private solidity에서 함수는 기본적으로 public으로 선언됨. 다만 함수는 기본적으로 private로 선언하고 공개할 수 있는 함수만 public으로 선언할 것. uint[] numbers; function _addToArray(uint _number) private { numbers.push(_number); } 3. 함수의 반환값 타입 지정 string greeting = "What's up dog"; function sayHello() public returns (string) { return greetin..
1. license & version 설정 // SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.7.0 uint8, uint16,uint32 과 같이 비트제한 가능, 제한 없으면 256비트 int : 정수형 -> int와 마찬가지로 비트제한이 가능하며 없으면 256비트 bool : 논리 자료형 string : UTF-8 인코딩 문자열 bytes : 바이트 address : 이더리움 주소 값 (0xaDc7192A0…) 4.수학 연산 다른 언어와 마찬가지로 기본 연산에 지수 연산까지 지원 uint x = 5 ** 2; // = 5^2 = 25 5.구조체와 배열 struct Person { uint age; string name; } // 2개의 원소를 담을 수 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/VNO2J/btrduT8w2O0/Uw6ti2lQpz4y1UcEXuTvt1/img.jpg)
solidity = contract 기반 language 여기서 말하는 contract란 블록체인 네트워크에서 쓰이는 smart contract를 말하는 것. *Smart Contract : 계약의 이행을 자동으로 해주는 코드 ex) 어떤 물건을 코인을 받고 보내주기로 했을 때 물건을 받고 물건 받은 사람이 '받았음' 버튼을 누르면 물건을 판 사람한테 코인이 가게끔 하는 방식. 솔리디티는 쉽게 말하면 '스마트 컨트랙트'라는 계약서를 만드는 랭기지라고 할 수 있다. 이더리움 버추얼 머신(Ethereum Virtual Machine)에서 작동하게끔 디자인된 언어라고 한다.
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cb7FcG/btrbpVVUgJl/M0JhMKvVzicO5Juk0lSqjk/img.png)
프로젝트 개요 1. 프로젝트 설명 사용자(후원자 또는 자영업자)는 이더리움 네트워크에 계정을 등록한 참여자이어야 한다. 후원을 받기위해 자신의 정보와 목표 후원 금액, 후원 기간을 제출하면 입력하면 운영자는 이 자영업자의 Funding Contract를 배포하고, 토큰을 발행한다. 후원자는 사이트에서 자영업자의 사연을 보고 후원 여부를 결정한다. 후원할 때, 자신의 계정 주소와 비밀번호(Private key)를 입력하고 얼마나 후원할지 입력한다. 후원을 마치면 사이트는 후원에 대한 보상으로 후원자에게 토큰을 발행한다. 자영업자는 목표금액 만큼 후원금이 모이면 제약없이 즉이 인출이 가능하다. 동작과정 1.준비 및 실행 1) 네트워크 테스트를 위해 이더리움 메인 네트워크가 아닌 테스트 네트워크(가나슈)를 사..