기존에는 자바스크립트에서 var로 변수를 선언했지만 ES6부터 let과 const가 도입되었고, 필요에 맞게 변수를 정의·선언하는 것이 더 용이해졌다. 자바스크립트에서 var, let, const로 변수를 선언할 때, 각각의 키워드는 변수의 범위(scope)와 할당 가능성(mutability)에 대해 다른 동작을 한다. 이 점을 기억해두면서 var, let, const는 각각 무엇이 다른지 알아보자. var var는 ES5까지 주로 사용된 변수를 선언하는 키워드이다. var는 오래된 자바스크립트 코드와의 호환성을 위해서 사용하는 것이 권장되어질 정도로 오래된 방식이다. 오래되었기 때문에 여러가지 문제점들이 발견되었으며, 이 문제를 해결하기 위해 나온 것이 let과 const라고 할 수 있겠다. 1) 함수..
회사에서 자주 쓰는 단어들인데 문득 과연 나는 이 뜻을 정확하게 이해하고 있는지 궁금해졌다. 금일 금일(今日)에서 금(今)이란 이제, 지금, 오늘을 뜻하는 말이다. 즉, 금일은 지금 지나가고 있는 오늘(today)을 의미한다. 금일 3시까지 문서를 작성해주세요 → 오늘 3시까지 문서를 작성해서 달라 명일 명일(明日)에서 명(明)은 '밝을 명'으로, 날이 밝으면이라는 뜻을 가진다. 즉, 명일은 밝아오는 내일(tomorrow)를 의미한다. 명일 1시부터 회의를 시작하겠습니다. → 내일 1시에 회의 시작 작일 작일(昨日)에서 작(昨)은 '어제 작'이란 한자로, 어제(yesterday)를 의미한다. 작일부터 문의게시판을 운영하고 있습니다. → 어제부터 문의게시판 운영 여기서 응용하면 재작일이라고 표현하기도 하는..
도움되셨다면 광고 한 번씩만 눌러주세요 !! 1. 다음 중 사무실 오염물질별 관리기준으로 옳지 않은 것은? 1 초미세먼지(PM2.5) - 50㎍/㎥ 이하 2 일산화탄소(CO) - 1,000ppm 이하 3 이산화질소(NO2) - 0.1ppm 이하 4 포름알데히드(HCHO) - 100㎍/㎥ 이하 정답 : 2번 2. VDT 증후군을 예방하기 위한 조치사항으로 거리가 먼 것은? 1 손은 팔꿈치 높이로 놓이게 하고 팔걸이는 작업공간 가까이 배치한다. 2 발꿈치가 땅에 닿지 않도록, 의자 높이를 조절하여 사용한다. 3 등받이는 조절가능하고 적절한 지지대가 있는것을 사용한다. 4 모니터는 화면 상단과 눈높이가 일치하도록 맞추어 사용한다. 정답 : 2번 3.다음 중 사무실 내 카페트, 페인트, 사무용 가구, 의복, 화..
솔리디티에서는 변수가 저장되는 데이터 영역으로 크게 3가지가 있다. 각각의 데이터 영역은 사용되는 목적과 특성에 따라 다르게 사용되는데, 이 데이터 영역들의 특징을 알아보자. 설명 내용이 길면 맨 아래 요약된 글을 참고하자. Storage 솔리디티에서 storage는 블록체인에 영구적인 상태를 저장하는 영역이다. 모든 스마트 컨트랙트의 상태는 블록체인의 상태로 저장되며, 상태 변경 함수가 호출될 때마다 해당 상태의 변경 사항이 블록체인의 storage에 저장된다. contract Example { uint256 public myNumber; } 위 코드에서 myNumber는 uint256 타입의 상태 변수이다. 이 변수는 스마트 컨트랙트의 storage 영역에 저장된다. myNumber 변수는 Examp..
솔리디티에서 함수를 정의할 때 함수 옆에 붙어서 제약을 걸어주는 키워드들이 존재한다. 이 키워드를 사용하면 그 함수에 부가적인 기능을 추가할 수 있는데 키워드들을 잘 사용하면 컨트랙트의 가스 비용을 줄이거나 간편하게 제약을 걸 수 있다. view 솔리디티에서 view가 붙은 함수는 블록체인에서 상태를 변경하지 않고 값을 읽기만 하는 함수이다. view 함수는 단순히 데이터를 읽기만 하고 변경하지 않기 때문에, 다른 컨트랙트를 호출할 수 있지만 상태를 변경하는 함수는 호출할 수 없다. 따라서 view 함수는 블록체인 안에서 상태 변경이 발생하지 않으며, 실행될 때 가스비의 없이 무료로 실행된다. 다음은 view 함수의 예시이다. pragma solidity ^0.8.0; contract Example { ..
솔리디티에서 override 키워드는 솔리디티 0.6.0 버전 이후에 추가된 기능으로, 상위 컨트랙트(contract)에서 정의된 함수를 하위 컨트랙트(contract)에서 재정의(override)할 때 사용한다. 상위 컨트랙트에서 정의된 함수와 같은 이름과 형식을 갖는 함수를 하위 컨트랙트에서 정의하면, 이를 override 했다고 한다. 이때, override한 함수는 상위 컨트랙트에서 정의된 함수와 이름, 매개변수 형식, 반환값 형식이 동일해야 한다. 즉, 상속받은 함수를 덮어쓰기 위해 같은 이름, 같은 매개변수를 가진 함수를 다시 정의할 때 사용하는 것이다. 솔리디티는 override를 통해 컨트랙트 간의 상속 관계를 구현할 수 있다. override(오버라이드, 재정의) override된 함수는..
솔리디티에서 msg.sender는 가장 중요한 전역 변수(global variable) 중 하나 이다. msg.sender는 현재 스마트 계약을 호출한 계정의 주소를 나타내며, 이것을 통해 스마트 계약은 누가 트랜잭션을 실행했는지 확인할 수 있다. 예를 들어, 계약을 배포한 주소에서 트랜잭션을 호출하면 msg.sender는 배포한 계정의 주소가 된다. 또, 다른 계정에서 트랜잭션을 호출하면 msg.sender는 그 계정의 주소가 된다. 즉, msg.sender를 사용하면 스마트 컨트랙트를 실행하는 사용자 또는 다른 컨트랙트의 주소를 확인할 수 있어, 스마트 컨트랙트는 msg.sender를 기반으로 조건 분기 등의 로직을 구현할 수 있다. msg.sender는 스마트 계약 보안을 유지하기 위해 매우 중요하..
간단하게 코드를 작성하거나 파일을 오픈할때 sublime text를 이용하는데 다른 툴을 쓸때도 자동정렬 기능이 있었으니 sublime text도 있을거라 생각했는데 사용자가 직접 설정해줘야한다고 한다. 1. Sublime Text의 메뉴창을 켜서 [Preferences] > [Key Bindings]을 클릭한다. 2. 아래와 같은 창이 나타날텐데, 왼쪽은 Sublime Text의 Default 설정이고 오른쪽은 사용자 Default 설정이다. 우리는 오른쪽 창에서 수정해줘야 한다. 오른쪽 창에 아래의 코드를 넣자. [ { "keys": ["command+i"], "command": "reindent", "args": {"single_line": false} } ] 이렇게 설정하면 앞으로 Cmd + I ..
클레이튼(Klaytn)은 국내 블록체인 기업인 Ground X가 개발한 공개형 블록체인 플랫폼이다. 이더리움 기반의 블록체인으로 solidity와 같은 이더리움 언어로 스마트 컨트랙트 개발이 가능하며 개발자들이 쉽게 BApp(블록체인 어플리케이션)을 개발할 수 있도록 다양한 도구와 서비스를 제공한다. 그럼 이제 클레이튼을 본격적으로 사용할 수 있도록 클레이튼 지갑을 생성해보겠다. 클레이튼은 국내 IT 기업 카카오의 자회사인 그라운드 X가 개발했다. 따라서 카카오 플랫폼을 활용하여 다양한 클레이튼 지갑 서비스를 제공한다. 그 중 PC에서 클레이튼 지갑을 만드는 방법을 소개하고, 테스트넷의 코인도 받아보도록 한다. 클레이튼 Wallet 페이지에서 클레이튼 지갑 생성 Klaytn Wallet baobab.wa..
OpenZepplin은 오픈소스 블록체인 프레임워크 및 라이브러리로, 이더리움 및 다른 블록체인 플랫폼에서 스마트 컨트랙트를 구축하는데 사용되고 있다. OpenZepplin은 강력한 보안 기능과 높은 수준의 코드 재사용성을 제공하는 것으로 유명하다. (OpenZepplin의 오픈소스들은 보안측면에서 검증받은 코드들이기에, DApp 개발에 신뢰하고 사용할 수 있다.) OpenZepplin은 다양한 프로그래밍 언어로 기본적인 컨트랙트들을 제공하는데, 그 중 우리는 솔리디티 기반의 Ownable 컨트랙트에 대해서 알아볼 것이다. Ownable 컨트랙트(소유 가능한 컨트랙트)란? Ownable 컨트랙트는 컨트랙트의 소유자를 지정하고 그 소유자만이 특정 기능을 수행할 수 있도록 하는 기능을 제공한다. 즉, Own..