class7_Address

개굴·2023년 5월 14일
0

solidity

목록 보기
7/11

// SPDX-License-Identifier: GPL-3.0

pragma solidity ^0.8.18;

contract Struct {
    struct Student{
        string name;
        uint birthday;
        uint number;
    }

    Student[] students;

    function pushStudents(string memory _name, uint _birthday, uint _number) public {
        students.push(Student(_name, _birthday, _number));
    }

    function setStudent(uint _n) public  view returns (Student memory){
        return students[_n-1];
    }

    function getBirthday(uint _n) public view returns (uint){
        return students[_n-1].birthday; //array이름[n번째].요소이름
    }

    //이더리움은 키벨류로 되어 있음 utxo아님 
    //array 전체 포문 돌릴 때 -> 평균 같은 것 / 순차적
    //mapping 포문 돌리기 어렵다. / 검색에 편함 
}

contract Address { //address의 this 
//Address 20 바이트 16진수 40글자 
    address a; //바이트 0x하고 0이 40개 
    function getAddress() public view returns(address){ //크기가 정적 
        return address(this); //컨트렉트 어드레스 

        // 모든 스마트 컨트렉트 한테 주소가 있다. 지값주소
        // EOA 컨트렉트 / CA 어카운트 
    }

    function getContractBalance() public view returns(uint){
        return address(this).balance; // 컨트렉트 잔액 보는 것 
    }


    function getMyAddress() public view returns(address){
        return address(msg.sender); // 내 지갑 주소 
        //누가 이 함수를 건드렸나? 이거임 from에 들어감 
    }

    function getMyBalance() public view returns(uint){
        return address(msg.sender).balance; //내 지갑 잔액 보는 것 
    }
    //길이만 같고 자료형은 다름 

    // function setA2(bytes 20) public returns (address){
    //     a = _a;
    // }

    function getA2() public view returns(bytes20){
       return bytes20(a); 
    }
    function setA3(bytes20 _a) public {
        a = address(_a);
    }

    // function getA() public view returns(bytes 20){
    //    return a; 
    // }

    function setAfaddress(address _a) public {
        a = _a;
    }

    function getA() public view returns(address){
       return a; 
    }

    //내가 스마트 컨트렉트에 무슨 일을 시키면 from 내 지갑주소 To는 스마트 컨트렉트 주소 

    uint b;

    function changeB() public {
        b = b+5;
    }

    function add(uint _a, uint _b) public pure returns(uint) {
        return _a+_b;
    }

}



contract Mapping {
    mapping (uint => uint) a;  //숫자로 숫자 
    mapping (uint => string) b; //숫자로 스트링
    mapping (string => address) c; // 스트링으로 어드레스 

    mapping(uint => mapping(string => uint)) score; //이중 매핑 
    //3반의 마이클의 점수 


    //여러가지 방면에서 사용되면 이중 배열 -> 좌표, 바둑판
    //키 180인 사람은 포문 유리, 어레이가 좋음


    //이름 검색 키 추출 
    mapping (string => uint) height;

    //정보 넣기 
    function setHight(string memory _name, uint _h ) public {
        height[_name] = _h;// mapping이름[key 값] = value 값
    }

    //정보 받기 
    function getHight(string memory _name) public view returns(uint){
        return height[_name]; // mapping이름[key 값]
    } //소문자 대문자 구분함 
    //해시테이블  
    //없는 애는 0을 줌 -> 키값(해시함수로 저장됨) / 없으면 초기값, 0으로 줌 
    //머클 페트리샤, 트라이 

    function deleteHeight(string memory _name) public {
        delete height[_name]; //초기값으로 돌려 보냄 / uint => 0;  string => "";
    }


}

0개의 댓글