일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- Solidity
- 제어자
- javascript
- nodejs
- frontend
- web3.js
- 프론트엔드
- 솔리디티
- vue
- geth구현
- 블록체인 구조와 이론
- 접근제어자
- 프레임워크
- kas
- 블록체인
- Klaytn API Service
- Geth
- blockchain
- 웹
- 서비스체인
- API
- SCN
- 이더리움
- ethereum
- 앵커링
- Klaytn
- 클레이튼
- Web
- vue.js
- web3
- Today
- Total
목록이더리움 (15)
BloCCat
클레이튼은 기본적으로 이더리움을 기반으로 만들어진 네트워크지만 형태가 다르다 기존 public 블록체인 네트워크인 이더리움과 비트코인이 단일 네트워크인 반면 클레이튼은 3중 네트워크로 이뤄진다. 0) SCN (Service Chain Network) - Service Chain Network는 BApp 에 의해 실행되는 블록체인으로 구성된 Klaytn 의 독립적인 하위 네트워크이다. Service Chain은 ENN을 통해 Klaytn network에 data를 처리한다. 1) ENN (Endpoint Node Network) - ENN은 Endpoint Node들로 구성돼 있으며 실제로 트랜잭션을 생성하고, rpc api 핸들링, Service Chain으로 부터 오는 데이터를 처리하여 BApp 사용에..
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개의 원소를 담을 수 ..
solidity = contract 기반 language 여기서 말하는 contract란 블록체인 네트워크에서 쓰이는 smart contract를 말하는 것. *Smart Contract : 계약의 이행을 자동으로 해주는 코드 ex) 어떤 물건을 코인을 받고 보내주기로 했을 때 물건을 받고 물건 받은 사람이 '받았음' 버튼을 누르면 물건을 판 사람한테 코인이 가게끔 하는 방식. 솔리디티는 쉽게 말하면 '스마트 컨트랙트'라는 계약서를 만드는 랭기지라고 할 수 있다. 이더리움 버추얼 머신(Ethereum Virtual Machine)에서 작동하게끔 디자인된 언어라고 한다.