Introducing Stake Lock-up

AMO Labs Dev
AMO Labs Official
Published in
5 min readSep 17, 2019

We’re preparing a new feature for AMO blockchain protocol. It’s called a stake lock-up. Literally, it is a feature that locks a newly added stake a certain period of time. Here, the time is measured in terms of number of blocks. Newly added stakes should stay locked in the chain for a pre-configured time until it is possible to withdraw them. Say, someone stakes 100 AMO at block height h, and he/she cannot withdraw this 100 AMO until the blockchain reaches the block height h + l, where l is the pre-configured lock-up period. We say the stake is unlocked at block height h + l. In case a user has an unlocked stake of 100 AMO and adds 50 AMO later, he/she can withdraw 100 AMO at any time, but he/she cannot withdraw 50 AMO until it is unlocked as described in the protocol spec. It is more intuitive to think that newly added stakes enter a tunnel. They still function as ordinary stakes, but cannot leave the ground until they come out of the tunnel. Each piece of stake advances through the tunnel one step at a time, i.e. a block.

This feature is a countermeasure for the blockchain stability. Generally speaking, a blockchain is more healthy when there are more block producers(validators in blockchains based on tendermint, or miners in blockchains based on hash-power competition, i.e. PoW). In PoS or DPoS consensus mechanism, it is essential to have a staked asset to be one of the validators. If it is too easy to withdraw these stakes, a blockchain node can get out of the validator pool at any time, and this means a rather unstable validator pool, and again, unstable and inefficient blockchain. The default lock-up period is hard-coded as one million blocks, but it may be configured at the very beginning of AMO blockchain. Since the average interval between blocks (block time) is 1 second, one million blocks mean approximately 11.5 days.

Stake 잠금 기능 소개

AMO Labs에서는 AMO 블록체인 프로토콜에 stake 잠금 기능을 준비중입니다. 문자 그대로 새로 추가되는 stake를 일정 기간 동안 잠그는 기능입니다. 여기에서 잠기는 기간은 블록의 수로 측정됩니다. 새로 추가되는 stake는 미리 정해진 기간 동안 체인에 잠긴 상태로 머무른 이후에만 인출할 수 있습니다. 예를 들어, 어떤 사용자가 블록 위치 h에 100 AMO를 stake했다면 블록 위치 h + l에 도달하기 전까지는 인출할 수 없습니다. 여기에서 l은 미리 정해진 잠금 기간이고, 블록 위치 h + l에서 해당 stake가 잠금해제된다고 표현합니다. 사용자가 이미 잠금해제된 100 AMO 만큼의 stake를 가지고 있고 이후에 50 AMO를 추가하고자 한다면, 100 AMO는 언제든 인출할 수 있지만 50 AMO는 잠금해제되기 전까지는 인출할 수 없고 이는 프로토콜에 통제됩니다. 새로 추가되는 stake 조각들은 일종의 터널에 들어간다고 생각하면 보다 이해하기 쉽습니다. 이들은 여전히 보통의 stake로서 동작하지만 터널을 빠져나오기 전까지는 그 지역을 벗어날 수는 없습니다. 모든 stake의 조각들은 터널을 한 번에 한 칸씩 이동하며 여기에서 이동 단위는 블록이 됩니다.

이 기능은 블록체인의 안정성을 위한 것입니다. 일반적으로, 블록체인은 보다 많은 블록 생산자들(tendermint 기반의 블록체인에서는 validator, PoW와 같이 hash 경쟁에 기반한 블록체인에서는 채굴자)이 있을 때 더 안정적입니다. PoS나 DPoS와 같은 합의 메커니즘에서는 validator가 되기 위해 자산을 stake하는 것이 필수입니다. 이 stake를 인출해 가는 것이 너무 쉽다면 블록체인 노드가 validator 집단에서 언제든 이탈할 수 있다는 것이고, 이는 곧 불안정한 validator 집단과 결과적으로는 불안정하고 비효율적인 블록체인으로 귀결됩니다. 기본 잠금 기간은 백만 블록으로 지정돼 있지만 AMO 블록체인을 시작할 때 설정할 수 있습니다. 블록 사이의 평균 시간 간격이 1초이기 때문에 백만 블록은 대략 11.5일 정도가 됩니다.

--

--