일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- CSS
- 파이썬
- 웹
- 백엔드
- AWS
- 타입스크립트
- 이슈
- 블록체인
- react
- 솔리디티
- BFS
- k8s
- 컴퓨터공학
- 리액트
- VUE
- 자바스크립트
- es6
- JavaScript
- 쿠버네티스
- 이더리움
- HTML
- docker
- 백준
- 알고리즘
- 가상화
- 클라우드
- next.js
- 프론트엔드
- TypeScript
- kubernetes
- Today
- Total

목록📖 💬 언어 (39)
즐겁게, 코드

솔리디티는 DAPP(탈중앙화 어플리케이션)의 로직을 담당하는데요, 어떻게 트랜잭션 내역과 계약 내용을 화면에 보여줄까요? 맞습니다! 바로 프론트엔드단이 별도로 필요한데요, 프론트엔드에 데이터를 넘겨주기 위해 이벤트를 활용합니다. 이벤트는 event 키워드로 선언할 수 있으며, 이벤트는 자바의 인터페이스처럼 본문을 구현하지 않습니다. [솔리디티 예시 코드] // onNewTransaction 이라는 이벤트를 정의합니다. event onNewTransaction(uint id, uint data); function add(uint id, uint data) public returns (uint) { // add 함수가 실행되면 onNewTransaction 이벤트가 호출됩니다. onNewTransaction..

블럭체인에서 보안은 매우 중요한 문제입니다. 따라서 솔리디티는 keccak256 이라는 강력한 해시 함수를 내장하고 있는데요, 한번 예를 들어 보겠습니다. (Git의 커밋번호를 생성할 때 쓰는 해시 알고리즘이 SHA-1인데, keccak256은 SHA-3을 사용합니다.) keccak256("aaaab"); //6e91ec6b618bb462a4a6ee5aa2cb0e9cf30f7a052bb467b0ba58b8748c00d2e5 keccak256("aaaac"); //b1f078126895a1424524de5321b339ab00408010b7cf0e6ed451514981e58aa9 단순히 입력으로 주어진 문자열의 한 문자를 b에서 c로 바꿨을 뿐인데 해시값이 완전히 달라진 모습입니다. C++ 등 다른 프로그래..

1. 함수 솔리디티에서는 function 키워드를 활용해 함수를 만들 수 있습니다. (솔리디티는 ECMAScript, 즉 자바스크립트 문법을 기반으로 설계되었다고 하는데, 아마 그 흔적 중 일부가 아닐까 싶습니다.) pragma solidity ^0.4.19; contract ZombieFactory { uint a = 16; uint b = a ** 10 struct Zombie { string name; uint dna; } Zombie[5] public zombies; function createZombie(string _name, uint _dna) { } } 함수의 접근자 지정하기 1 : private & public 함수에는 private & public 속성의 접근자를 지정할 수가 있습니다...

솔리디티(Solidity)는 *계약 지향 프로그래밍 언어로, 다양한 블록체인 플랫폼의 스마트 계약 로직을 작성할 때 사용됩니다. (쉽게 설명하면 이더리움 계열의 블록체인은 솔리디티로 작성됐다고 보면 됩니다.) ✅ TIP - 솔리디티를 처음 학습하는 입장이라면 이 "계약 지향" 이라는 말이 굉장히 생소하게 느껴질 수 있는데요, 보면서 느끼시겠지만 계약(contract)은 문법상 자바 등의 "클래스" 와 굉장히 유사한 구조입니다. 따라서, 앞으로 나올 "컨트랙트" 라는 말이 어색하다면 "클래스" 와 비슷한 개념이라고 어렴풋이 이해하고 계셔도 될 듯 합니다. 솔리디티의 큰 특징은 다음과 같습니다. 정적 타입 언어 Ethereum Virtual Machine (EVM) 위에서 실행됨 문장의 끝을 반드시 세미콜론..

토스트 UI 팀의 "TDZ을 모른 채 자바스크립트 변수를 사용하지 말라" 글을 읽고, 오늘도 변수를 스스럼없이 사용한 것을 반성했습니다. TDZ(Temporal Dead Zone) 는 초기화되지 않은 변수가 저장되는 곳인데요, 오늘은 TDZ와 변수에 대한 얘기를 해보도록 하겠습니다. var, const, let과 호이스팅 console.log(Var); // undefined console.log(Let); // ReferenceError: Let is not defined var Var = 1; let Let = 2; TDZ를 소개하기 전, 잠깐 호이스팅의 개념을 되짚어보는 시간을 갖겠습니다. 초기화되지 않은 변수에 접근하려 하면 var 변수는 undefined를 출력하고 넘어가지만, let과 cons..

룸메한테서 오버로딩 문제 관련 질문을 받았다. float mul(float a) { return a * a; } double mul(double a) { return a * a; } 내용이 뭐냐면 실수형을 인자로 받는 두 함수가 오버로딩되었을 때, mul(3.0) 을 호출하면 과연 어떤 함수가 호출되냐는 질문이었다. 정말 재밌는 질문이어서 직접 코드를 짜봤는데, 그 결과 double 형으로 오버로딩된 함수가 호출되는 것을 확인할 수 있었다. public class main { public static void main(String[] args) { overload o = new overload(); o.mul(3.0); // double: 9.000000 } } public class overload {..

제너레이터를 활용하면 함수의 실행을 중간에 멈췄다가 재개할 수 있습니다. // 화살표 함수 형태로는 제너레이터를 생성할 수 없습니다. function* f1() { yield 10; yield 20; return "완료"; } const gen = f1(); 보시면 function 키워드 뒤에 * 이 붙어있는 것을 확인할 수 있는데요, function* 키워드는 제너레이터를 정의하는 문법입니다. (따라서 화살표 함수 형태로는 제너레이터 함수를 생성할 수 없습니다.) 함수 내에 존재하는 yield는 함수의 실행을 잠깐 멈출 수 있는 분기이며, 제너레이터 함수를 실행하면 제너레이터 객체를 반환합니다. yield 키워드 yield 키워드에 대해 조금 자세히 다루자면 yield는 제너레이터 내부의 값을 외부로 ..