그냥 개인의 취미(?) 혹은 호기심 해결차 새로운 언어를 하나 골라봤다.
블록체인, 이더리움 많이는 들어봤지만 이 분야에 있어서 알고 있는 내용은 극히 적었다.
그래서 기본적인 언어를 공부하면서 알아두면 좋지 않을까 싶어서 골랐다. 바로 Solidity.
Solidity
이더리움에서 제공하는 스마트 컨트랙트 언어이다. 이는 제3자의 인증기관없이 개인간에 계약이 이루어질 수 있도록 하는 기술이다.
공부 사이트 추천
#1 Solidity Tutorial & Ethereum Blockchain Programming Course | CryptoZombies
CryptoZombies is The Most Popular, Interactive Solidity Tutorial That Will Help You Learn Blockchain Programming by Building Your Own Fun Game with Zombies — Master Blockchain Development with Web3, Infura, Metamask & Ethereum Smart Contracts and Become
cryptozombies.io
공부사이트 추천은 여기로 받았다. 차근차근 설명과 바로 실전(?)에 투입되서 배우는게 생각보다 재밌다. 이 언어에 흥미를 느끼게 된다면 이 페이지에서 알아가는걸 추천한다. 아래는 chapter 1을 진행하면서 메모한 내용들이다.
변수 및 함수 선언
// 변수선언
uint number = 10;
string dog = 'dog';
프로그래밍 언어를 하나라도 해봤으면 익숙할법한 변수 선언이다. unit 정도가 대충 예상은 가지만 신박해보인다. undesined integer의 의미로 부호가 없는 정수를 뜯한다.
// 함수 선언
funtion goHome(string memory _name, uint _dna) public {
...
}
funtion _goHome(string memory _name, uint _dna) private {
...
}
funtion goPure(string memory _name) public pure returns(string memory) {
...
}
funtion goView(string memory _name) public view returns(uint) {
...
}
함수 선언부터 memory, pure 등이 눈에 보인다. 한번 알아보자.
string 타입은 동적크기의 참조타이기에 어디에 데이터를 저장할지를 명시해주어야 한다.
memory : 임시저장으로 함수 호출에만 사용
storage : 영구적으로 블록체인에 저장
calldata : 읽기 전용이고 변경할 수 없는 데이터에 사용
string, bytes, array, struct, mapping 이 타입들이 동적타입에 속한다고 한다.
함수 선언시 사용되는 pure 는 블록체인 상태에 접근하지도, 변경하지도 않는 순수 반환함수를 나타낸다고 한다. 아래처럼 순수하게 계산해서 리턴해주는 함수에 사용되는것 같다.
function add(uint a, uint b) public pure returns (uint) {
return a + b;
}
view는 변수를 읽기만 할때 사용한다고 한다. 읽거나 쓰면 none-pure / none-view 를 사용한다고 한다.
웹적용
var abi = /* abi generated by the compiler */
var ZombieFactoryContract = web3.eth.contract(abi)
var contractAddress = /* our contract address on Ethereum after deploying */
var ZombieFactory = ZombieFactoryContract.at(contractAddress)
// jQuery로 동작 체크
$("#ourButton").click(function(e) {
var name = $("#nameInput").val()
// Call our contract's `createRandomZombie` function:
ZombieFactory.createRandomZombie(name)
})
// 업데이트
var event = ZombieFactory.NewZombie(function(error, result) {
if (error) return
generateZombie(result.zombieId, result.name, result.dna)
})
function generateZombie(id, name, dna) {
let dnaStr = String(dna)
while (dnaStr.length < 16)
dnaStr = "0" + dnaStr
let zombieDetails = {
zombieName: name,
zombieDescription: "A Level 1 CryptoZombie",
}
return zombieDetails
}
이는 웹에 기능을 붙일때 사용한 코드 일분이다.
기본적으로 이더리움은 Web3.js 라는 js 라이브러리를 이용해서 연결한다고 한다.
연결후에 event 를 이용해서 특정 버튼이 눌리거나 특정 동작하는걸 체크해서 코드가 실행된다.
추천받아 본인도 사용해봤는데
스무스하게 배우면서 사용하기 좋은 사이트 같아서
관심있는 분들에게 추천한다!
'기타 개발' 카테고리의 다른 글
| [ML] 시계열 데이터 (0) | 2026.06.05 |
|---|---|
| 최적화 할때 폰트 크기도 신경 써보기~!! (1) | 2026.02.20 |
| [OG] 카카오톡 meta 적용 오류 (feat. OG) (1) | 2025.09.25 |
| [보안] js AES 암호화 복호화(feat. crpyto) (0) | 2025.09.02 |