[Solidity] solidity 변수 함수 선언

2025. 8. 18.·기타 개발
728x90

그냥 개인의 취미(?) 혹은 호기심 해결차 새로운 언어를 하나 골라봤다.

블록체인, 이더리움 많이는 들어봤지만 이 분야에 있어서 알고 있는 내용은 극히 적었다.

그래서 기본적인 언어를 공부하면서 알아두면 좋지 않을까 싶어서 골랐다. 바로 Solidity.

 

Solidity

이더리움에서 제공하는 스마트 컨트랙트 언어이다. 이는 제3자의 인증기관없이 개인간에 계약이 이루어질 수 있도록 하는 기술이다. 

 

공부 사이트 추천

https://cryptozombies.io/

 

#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 를 이용해서 특정 버튼이 눌리거나 특정 동작하는걸 체크해서 코드가 실행된다.

 


 

추천받아 본인도 사용해봤는데

스무스하게 배우면서 사용하기 좋은 사이트 같아서

관심있는 분들에게 추천한다!

728x90

'기타 개발' 카테고리의 다른 글

[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
'기타 개발' 카테고리의 다른 글
  • [ML] 시계열 데이터
  • 최적화 할때 폰트 크기도 신경 써보기~!!
  • [OG] 카카오톡 meta 적용 오류 (feat. OG)
  • [보안] js AES 암호화 복호화(feat. crpyto)
devQ
devQ
    250x250
  • devQ
    개발하는 리트리버
    devQ
  • 전체
    오늘
    어제
    • 분류 전체보기 (155)
      • Front-end (81)
      • AI (3)
      • FUTURE⭐️ (1)
      • React-Native (12)
      • Back-end (6)
      • 기타 개발 (5)
      • 개발 지식 (35)
      • 코뷰 리뷰 (2)
      • 이벤트 (2)
      • --------------------- (1)
      • 서울숲복합문화체육센터 (6)
  • 블로그 메뉴

    • 홈
  • 최근 글

  • 인기 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.4
devQ
[Solidity] solidity 변수 함수 선언
상단으로

티스토리툴바