실생활 예를 통한 스마트 컨트랙트: 근로 계약서

nujabes403
4 min readApr 1, 2018

스타트업이나 초기 팀빌딩이 막 되려고하는 곳에 근로 계약서를 작성하게 되면 근로계약서에 ‘스탁옵션'이라는 항목이 있을 것이다.

스탁옵션 계약서

스탁옵션이란 회사가 일정 수량의 자사 주식을 “살 수 있는” 권리를 주는 제도를 말한다. 의외로 많은 사람들이 스탁옵션과 주식을 같은 것으로 보고 스탁옵션을 받으면 바로 주식이 되는 것으로 착각하는데, 말 그대로 자사 주식을 “살 수 있는" 권리를 주는 제도라서 액면가에 해당하는 돈을 지불하고 주식을 사야 내 주식이 되는 것이다.

그런데 보통 이런 스탁옵션은 근로계약을 하고 3년이나 4년후에 “살 수 있다" 라고 조항에 적혀있다.

따라서 1~2년 정도 근무하고 이직을 한다고 하면 이 스탁옵션이 없어지고 그에 따라 그 회사 주식을 살 수 있는 권리는 없어지는 것이다.

스마트 컨트랙트를 이용하면 이런 근로계약서의 스탁옵션 조항을 자동화 할 수 있다.

function convertStockOptionToStock() payable {
require(isWorker[msg.sender]); // 함수를 실행하는 사람이 회사 직원인지 확인
require(now >= workStartDate[msg.sender] + 5 years); // 근로시작일부터 5년이 지났는지 확인
require(msg.value == stockOptionParValue[msg.sender]); // 함수를 실행하는 근로자가 보내는 돈이 액면가와 같은지 확인
msg.sender.transfer(stock[msg.sender]); // 회사 직원 지갑주소에 주식(코인) 전송)
}

스탁옵션을 주식으로 바꾸려는 직원이 스탁옵션 효력이 발생하는 시점이 되면 convertStockOptionToStock이라는 함수를 실행시켜서 주식을 받아가는 것을 자동화 할 수 있다.

물론 이 함수를 실행해서 누구나 주식을 받아가면 안되기 때문에 함수에

i) 함수를 실행하는 사람(지갑 주소)이 회사 직원(회사 직원 지갑주소)인지 확인을 하고

ii) 지금이 근로시작일부터 5년이 지난 스탁옵션을 행사할 수 있는 시점인지 확인을 하고

iii) 근로자가 함수를 실행하면서 컨트랙트에 보내는 돈이 계약서에 사인했던 그 금액와 같은지 확인을 하고

위 세 항목이 모두 맞으면 그때 회사직원의 지갑주소로 주식을 전송하는 방식이다.

물론 위의 코드는 주식이 token화 될 수 있다는 것을 전제로 말한 것이지만, 점점 블록체인의 mass adoption이 일어나면 주식도 token화 되고, 스탁옵션뿐만 아니라 근로계약서의 전체 조항이 스마트 컨트랙트화 될 수 있다고 생각한다.

위 convertStockOptionToStock 함수에서 사용한 workStartDate(근로시작일), stockOptionParValue(액면가), isWorker(회사직원인지 확인) 하는 데이터들에 대해서도 블록체인에 저장해두는 방식으로 근로계약을 하는 것도 가까운 미래에 충분히 상상해 볼 수 있는 일인 것 같다.

p.s)

근로계약 스마트컨트랙트의 예로 간략하게 코드를 작성해보면 아래와 같은 모습이 될 것이다.

mapping (address => boolean) isWorker;
mapping (address => uint) workStartDate;
mapping (address => uint) stockOptionParValue;
mapping (address => uint) stock;
function joinCompany() { // 입사
isWorker[msg.sender] = true; // 함수를 실행하는 사람을 직원으로 등록
workStartDate[msg.sender] = now; // 함수를 실행하는 시점을 근로시작일로 등록
stockOptionParValue[msg.sender] = 50000; // 스탁옵션 설정
... 기타 업무에 필요한 사항들 등록
}

--

--