기본 프로젝트를 세팅하기 위한 방법은 아래에 링크를 참고 [이더리움] Hardhat 설치 후 TypeScript 프로젝트 생성하기Hardhat 기존 프로젝트에 Hardhat 설치 npm install --save-dev hardhat # npm install --save-dev hardhat npm WARN deprecated request-promise-native@1.0.9: request-promise-native has been deprecated because it extends the now deprecated request packageheun.tistory.com hardhat.config.ts 작성hardhat.config.ts는 Hardhat 프로젝트의 주요 설정 파일이다. 이 파일을 ..
sedsed 명령어는 stream editor의 약자로 주로 텍스트 스트림을 변환하거나 조작하기 위한 목적으로 사용되는 명령어다. 이를 통해 파일의 내용을 읽어서 패턴 매칭, 치환, 삭제 등의 다양한 작업을 수행할 수 있다. sed는 원본 파일을 직접 변경하지 않고, 그 결과를 표준 출력(stdout)으로 보내는 특징이 있습니다. 따라서 원본 파일을 변경하려면 리다이렉션을 사용하여 출력 결과를 파일에 저장해야 한다. sed 예시: old 문자열을 new로 치환sed 's/old/new/g' filenamefilename 파일의 내용 중 old라는 문자열을 new로 전체 치환하고 표준 출력으로 보낸다. 10번째 줄에서 20번째 줄까지 내용을 출력sed -n '10,20p' filename특정 범위의 줄..
오류 새로운 Ubuntu 서버를 세팅하고 난 후 apt update 명령어를 사용하니 다음과 같은 오류가 발생하였다. E: The repository 'file:/cdrom focal Release' no longer has a Release file. N: Updating from such a repository can't be done securely, and is therefore disabled by default. N: See apt-secure(8) manpage for repository creation and user configuration details. 이 오류 내용은 Ubuntu 서버에서 apt를 사용하여 패키지를 업데이트하려고 할 때 특정 소스가 더 이상 유효하지 않거나 접근할 수..

Geth를 리눅스 서버에 세팅하고 동기화를 완료하게 되면, 다음과 같은 로그가 나오는 것을 확인할 수 있다. 이 로그는 우리가 올바르게 Geth를 세팅하고 블록체인과 동기화를 잘 진행하고 있다는 것을 알려준다. 하지만 이 로그들은 그저 빠르게 스크롤되는 글자들일뿐, 어떤 의미를 갖는지 이해하기 어려웠다. 따라서 이번 블로그 포스팅에서는 이 로그들이 어떤 정보를 담고 있는지, 그리고 우리가 이를 어떻게 해석하고 활용할 수 있는지에 대해 알아보려고 한다. 이를 위해 우리는 geth의 소스 코드를 직접 들여다보며 블록이 블록체인에 추가되는 과정에서 어떤 단계를 거치는지 그리고 이 과정에서 어떤 데이터가 로그로 남게 되는지 살펴보려고 한다. Imported new potential chain segment, C..
unchecked? Solidity에서 unchecked 문법은 스마트 컨트랙트에서 오버플로우(overflow)와 언더플로우(underflow) 검사를 명시적으로 생략하도록 지시하는 기능이다. unchecked 블록 내부의 코드는 컴파일러에 의해 오버플로와 언더플로 검사가 수행되지 않는다. 오버플로우? 언더플로우? 오버플로우(overflow)는 컴퓨터 프로그래밍에서 정수형 변수가 표현할 수 있는 값의 범위를 초과하여 발생하는 현상이다. 오버플로우가 발생하면 변수는 예상치 못한 값으로 변경되며 프로그램의 잘못된 동작이나 오류를 일으킬 수 있다. 또한 스마트 컨트랙트 보안의 취약점이 발생할 수 있다. 오버플로우는 주로 두 가지 상황에서 발생한다. 1. 두 정수의 덧셈 연산에서 합이 최대 표현 가능한 값보다 ..
mint() 예시 /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address..
스마트 컨트랙트에서 소유권을 관리하고 변경하는 방법에 대해 살펴보겠다. 이를 위해 OpenZeppelin의 Ownable.sol 컨트랙트에서 제공하는 세 가지 함수 renounceOwnership, transferOwnership을 사용한다. Ownable.sol // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "./Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an accou..
ERC20 토큰 컨트랙트의 핵심 기능 중 하나는 토큰 소유자가 다른 사용자에게 자신의 토큰을 사용할 수 있는 권한을 부여하는 것이다. 이를 위해 ERC20 표준에는 approve와 allowance라는 두 가지 중요한 함수가 포함되어 있다. ERC20.sol // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; import "./IERC20.sol"; import "./IERC20Metadata.sol"; import "./Context.sol"; /** * @dev Implementation of the {IERC20} inter..
예시 'use strict'; const nconf = require('nconf'); const models_maria = require(nconf.get('models_maria')); module.exports = async function(outCallback) { try { await models_maria.db.sync(); outCallback(null, '==> MariaDb Connect Complete!!!\n'); } catch (err) { outCallback(err); } }; 모듈과 라이브러리 불러오기 필요한 모듈과 라이브러리를 불러온다. 여기서는 구성 관리를 위한 nconf 라이브러리와 MariaDB와의 연결을 관리하기 위한 사용자 정의 모듈 models_maria를 사용한다..
Spring Security란? Spring Security는 웹 애플리케이션의 인증 및 권한 관리를 간편하게 처리할 수 있는 프레임워크이다. 이를 통해 개발자들은 보안에 대한 고민을 최소화하고, 실제 비즈니스 로직에 집중할 수 있다. 예시 @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { auth.inMemoryAuthentication() .withUser("user").password("{noop}passw..
ufw ufw(Uncomplicated Firewall)는 리눅스 기반 시스템에서 사용되는 간단한 방화벽 관리 도구로 커맨드 라인을 통해 사용자가 쉽게 방화벽 설정을 할 수 있도록 도와준다. ufw 설치 및 활성화 우분투에 기본적으로 설치되어 있는 경우가 많지만 만약 ufw가 설치되어 있지 않다면 다음 명령어로 설치할 수 있다. sudo apt-get install ufw 설치가 완료되면 다음 명령어로 ufw를 활성화한다. sudo ufw enable 포트 추가/제거 ufw를 사용하여 포트를 열고 싶다면 다음과 같은 형식으로 명령어를 입력한다. sudo ufw allow [포트번호]/[프로토콜] 예를 들어, TCP 프로토콜을 사용하는 80번 포트를 열고 싶다면 다음과 같이 입력한다. sudo ufw al..
SSL? SSL(Secure Sockets Layer)은 인터넷상에서 데이터를 암호화하여 전송하는 보안 프로토콜이다. 웹 사이트와 사용자 간의 정보를 안전하게 보호하기 위해 사용되며 웹 서버와 웹 브라우저 사이에 암호화된 연결을 제공한다. Let's Encrypt Let's Encrypt는 무료 SSL/TLS 인증서를 발급하는 인증 기관(Certificate Authority, CA)이다. 인터넷상에서 데이터를 안전하게 전송하기 위해 사용되는 SSL/TLS 인증서를 무료로 제공하며 웹 사이트의 보안을 쉽게 향상할 수 있게 도와준다. Certbot 설치 sudo apt-get update sudo apt-get install certbot Certbot 버전 확인 sudo certbot --version ..