• 카테고리

    질문 & 답변
  • 세부 분야

    블록체인

  • 해결 여부

    미해결

caver를 통해 contract를 여러개 배포할 수 있나요?

19.05.30 23:22 작성 조회수 145

0

 직원 정보를 블록체인에 저장하는 bapp을 실습하고 있는데요

사장마다 smart contract를 하나 갖고 있어, 이 contract에 직원들의 정보를  저장하고 싶은데요... 

여기서 여러 smart contract를 만들고 싶은데,

caver를 이용해서 사장마다 고유의 smart contract를 갖게 하는 방법이 있는지 궁금합니다.

답변 2

·

답변을 작성해보세요.

0

제이유님의 프로필

제이유

질문자

2019.06.03

예시로 들어주신 예제를 기반으로 저만의 솔리디티 실습중이였습니다.!! 

답변 감사합니다!

0

안녕하세요. 이 방법보다 좀 더 효율적으로 솔리디티를 활용하시는 방법을 추천합니다. 사장마다 여러개의 컨트랙을 소유하기 보다 한 컨트랙에서 특정 계정(CEO)만이 직원정보를 추가하거나 볼 수 있게 해야하지 않을까요?

예를들어 매핑을 써서

    struct Employee {
        string name;
uint age;
}
mapping(address => Employee[]) ceoEmployees;
function addEmployee(string _name, uint _age) public { ceoEmployees[msg.sender].push(Employee (_name, _age));
}

function getEmployeeCount(address _ceo) public view returns (uint) {
return ceoEmployees[_ceo].length;
}


function getEmployees(address _ceo) public view returns (string[], uint[]) {
uint count = getEmployeeCount(_ceo);
address[] memory names = new address[](count.length);
uint[] memory ages = new uint[](count.length);

for (uint i = 0; i < count.length; i++) {
Employee storage employee = ceoEmployees[_ceo][i];
names[i] = employee.name;
ages[i] = employee.age;
}

return (names, ages);
}

매핑을 통해서 키값을 사장 계정으로 지정하고 값으로 직원정보 리스트를 불러오는 구조입니다. 

getEmployees함수에서 직원이름과 나이 배열을 따로따로 불러와서 리턴하는 이유는 솔리디티에서 아직 struct를 리턴할 수 없기 때문입니다.  

효율성을 높이기위해 한 컨트랙에서 진행해보세요. 솔리디티를 더 공부해보시는것도 좋은 방법입니다. 

p.s. 위 코드 테스팅해보지는 않았습니다.