티스토리 뷰

1. 배열

Person[] public people 

uint[] memory result = new uint[](3) 

 

2. 랜덤문자 생성 

keccak256("aaaa")

 

3. 형변환

uint a = 5;

uint b = 6;

uint8 c = a*uint8(b) 

 

3.1 uint 

 

3.2 캐스팅 

- uint32(uint256 변수)

 

4. 이벤트 

 

5. Address

0x0cE446255506E92DF41614C46F1d6df9Cc969183

 

 

6. Mapping

- 솔리디티 Storage에서 구조화된 데이터를 저장하는 또다른 방법, 오직 상태변수로만 선언 

- 기본적으로 키 - 값(key - value) 저장소로 데이터를 저장하고 검색하는데 이용됨 

- key는 실제로 저장되지 않고 키의 keccak256 해시값이 검색에 사용됨 

- python의 {} dictionary와 같다고 해야하나?

 

ex) mapping (uint => address) public zombieToOwner;
ex) mapping (address => uint) ownerZombieCount;

 

솔리디티에는 모든 함수에서 이용 가능한 특정 전역 변수들이 있음

- 그 중 하나가 현재 함수를 호출한사람( 혹은 스마트컨트랙트)의 주소를 가리키는 msg.sender 

- 솔리디티에서 함수 실행은 항상 외부 호출자가 시작 

 

 

7. Msg.sender

- 솔리디티에서 함수 실행은 항상 호출을 해야지 실행이 되는 구조

- 실행하는 계정 msg.sender 

 

 

8. require 

- 특정 도건이 참이 아닐때 함수가 에러 메세지를 발생하고 실행 멈추게 될때

- python에서는 assert와 같음 

 

function sayHitoVitalik(string _name) public{

  require(keccak256(_name) == keccak256("Vitalik"));

  return "Hi" ; 

}

 

 

9. 상속

contract Doge{

 function catchphrase() public returns (string){ {

 return "So WoW CryptoDoge"; 

}}

 

 

contract BabyDoge is Doge{

function anotherCatchphrase() public returns (string){

  return "Such Moon BabyDoge" 

}

}

 

 

9. Import

- 코드가 길어지고 있기 때문에 파일로 나누어서 정리

- 솔리디티 프로젝트 긴코드 처리 

ex) import "./zombiefactory.sol"; 

 

 

 

 

10. Storage & Memory 

- Contract가 배포된 후 다음 블록체인에 계속 작동한다면, 그 Contract의 데이터도 블록체인에 저장되어 있어야 한다.

 

- Stroage : 블록체인 상에 영구적으로 저장되는 변수

- Memory : 임시적으로 저장되는 변수, 컨트랙트 함수에 대한 외부 호출들이 일어나는 사이에 지워짐 

                  = 함수 내에 선언된 변수는 memory로 자동 선언되어서 함수 호출이 종료되면 사라짐 

- 두 변수는 각각 컴퓨터 하드 디스크와 RAM과 같음 

 

 

11.  접근 제어자 

Internal, External, public, private 

- public과 private 이외에도 솔리디티에는 internal과 External라는 함수접근제어자가 있음

- internal은 함수가 정의된 컨트랙트를 상속하는 컨트랙트 내에서도 접근이 가능함 

- external은 함수가 컨트랙트 바깥에서만 호출이될수 있고 컨트랙트 내의 다른 함수에 의해 호출될 수 없음 

 

function _createZombie(string _name, uint _dna) internal {

  uint id = zombies.push(Zombie(_name, _dna)) -1;

  zombieToOwner[id] = msg.sender;

  ownerZombieCount[msg.sender]++;

  NewZombie(id, _name, _dna);

}

 

12. Ownable

- 계약에 대해 소유권을 적용할 수 있는 라이브러리

modifier onlyOwner() { require(msg.sender == owner); _ }

 

 

13. Gas

- 솔리디티에서는 사용자들이 만든 Dapp의 함수를 실행할때마다 가스라고 불리는 화폐를 지불하는것이 필요 

 

 

14. 시간단위( Time units) 

- seconds, minutes, hours, days, weeks, years 제공 

 

 

15. if문

 

 

 

16. for문 

- for (uint i=1 ; i<=10; i++) {}

 

 

17.  Pure 함수

- 해당 함수가 어떤 데이터도 블록체인에 저장하지 않을 뿐 아니라, 블록체인으로부터 어떤 데이터도 읽지 아 ㄶ음을 알려줌 

 

 

18. View 함수

- 상태 제어자(state modifier) 

- 블록체인과 상호작용 하는 방법에 대해서 알려줌

- 해당함수를 실행해도 어떤 데이터도 저장/변경되지 않음을 알려줌

 

 

19. onlyOwner, aboveLevel

- 사용자 정의 제어자

- 제어자를 사용해서 함수에 이 제어자들이 어떻게 영향을 줄지를 결정하는 논리를 구성할 수 있음 

 

 

20. paypable

- 이더를 받을 수 있는 특별한 함수 유형

- 일반적인 API로는 보낼수 없지만 payable

- 이더리움에서는 돈(이더), 데이터(transaction payload) 그리고 컨트랙트 코드 자체 모두 이더리움위에 존재하기 때문에 함수를 실행하는 동시에 컨트랙트에 돈을 지불하는 것이 가능함 

 

 

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
pragma solidity ^0.4.19l
 
contract ZombieFactory{
    
    uint dnaDigits = 16;
    uint dnaModulus = 10 ** dnaDigits;
    
    
    uint x = 5**2 ; // 5^2 
    
    //구조체 
    struct Zombie{
    string name;    
    uint dna; 
    }
 
    //구조체 배열
    Zombie[] public zombies; // 동적배열, 원소를 계속 추가할  수 이음 
    
    //함수선언 public
    function createZombie(string_name, uint_dna){
        zombies.push(Zombie(_name,_dna))
 
    }
    
    //함수선언 private 
    function _createZombie(string _name, uint _dna) private {
        zombies.push(Zombie(_name, _dna));
    }
 
    //
    function _generateRandomDna(string _str) private view returns(uint){
        uint rand = uuint(keccak256(_str));
        return rand % dnaModulus;
    } 
    
    //
    function createRandomZombie(string _name) public {
        uint randDna = _generateRandomDna(_name);
        _createZombie(_name, randDna);
    
    //Event 생성 
    event NewZombie(uint zombieId, string name, uint dna);
    
}
cs
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2024/12   »
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 31
글 보관함