일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 앵커링
- javascript
- nodejs
- frontend
- web3
- blockchain
- 이더리움
- 제어자
- web3.js
- 프레임워크
- vue
- geth구현
- 웹
- ethereum
- Geth
- vue.js
- Web
- 블록체인
- 서비스체인
- Solidity
- 프론트엔드
- 접근제어자
- 블록체인 구조와 이론
- 솔리디티
- kas
- Klaytn API Service
- SCN
- API
- Klaytn
- 클레이튼
- Today
- Total
목록전체 글 (48)
BloCCat
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/6wNAo/btrfVsVgorQ/gtfxyK28fDsJiPkLcZvRqk/img.png)
KAS란? KAS란 Klaytn API Service의 약자로 ground-x에서 제공하는 클레이튼 네트워크 전용 api다. 클레이튼기반의 BApp을 개발하려면 클레이튼 네트워크에 Endpoint Node를 띄워야 하는데 KAS를 사용하면 KAS가 Endpoint Node 역할을 해주어서 따로 노드를 띄울 필요없이 제공하는 api만 사용하면 되므로 개발이 편리하다. 1. 권한 및 계정 생성 - KAS를 사용하기 위해선 KAS 권한을 받고 account를 생성해야 하는데 이는 KAS Console에서 회원가입 후 쉽게 만들 수 있다. https://console.klaytnapi.com/ko/dashboard KAS Console console.klaytnapi.com 1) 권한 생성 왼쪽 메뉴의 "Sec..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bt6lva/btrfU3uCEgo/vyjE5g0D7pkKSSLnnSpVt0/img.png)
클레이튼은 기본적으로 이더리움을 기반으로 만들어진 네트워크지만 형태가 다르다 기존 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 사용에..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cuh4wT/btrd03EmMqM/nk3w9xTmc947k7Ve8YMjtk/img.gif)
1.solidity extention 이 설치 돼있어야함 2.f1 누른후 solidity: change global compiler version(remote) 클릭 후 변경 출처 https://medium.com/michaels-dapp-dev-tips/how-to-change-the-solidity-compiler-in-vs-code-4c2660a856da How to Change the Solidity Compiler in VS Code Easily Change Solidity Compiler Versions medium.com
1. 접근 제어자 - 가시성 (visibliity)로 분류 내부 컨트랙트 호출 외부 컨트랙트 호출 상속 컨트랙트 호출 public O O O private O X X external X O X internal O X O 2. 함수 타입 제어자 데이터 읽기 데이터 쓰기 가스비용 view O X X pure X X X payable O O O 3. 사용자 정의 제어자 modifire로 정의, 내용은 require(조건) , _; https://bloccat.tistory.com/29?category=926808 Ownable.sol 생성자 : 컨트랙트랑 같은 이름으로 정의하거나 constructor() 로 정의 modifier : 함수 제어자, 다른 함수들에 대한 접근을 제어하기 위해 사용되는 일종의 유사 ..
payable - 가상화폐로 접근하기 위한 키워드, 이더 코인을 전송하는 smart contract를 작성하기 위해서 반드시 사용 * payable을 작성한 함수에서만 이더를 보낼 수 있기 때문에 smart contract 외부에서 해당 함수들 중에 코인을 전송 시키는 함수를 사용하려 한다면, 해당 함수는 반드시 payable 키워드가 함께 작성된 함수이어야 한다. contract OnlineStore { function buySomething() external payable { // 함수 실행에 0.001이더가 보내졌는지 확실히 하기 위해 확인: require(msg.value == 0.001 ether); // 보내졌다면, 함수를 호출한 자에게 디지털 아이템을 전달하기 위한 내용 구성: transf..
파일 감시자 수의 한계가 도달했다는 내용 해결법 echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
함수 제어자는 인수 또한 받을 수 있다. // 사용자의 나이를 저장하기 위한 매핑 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..