모빌리티 데이터 공유 플랫폼

home link

reference material


0.28 KRW
Exchanges that listed the coin
To be released
Project introduction

AMO는 데이터의 저작권을 가진 개인 및 기업에게 이윤을 주고, 데이터를 원하는 사람들이 신뢰할 수 있는 데이터를 안전하게 구매할 수 있도록 하는 플랫폼을 제공하기 위해 시작되었습니다.

Executives and partners

SangGyoo Sim


KwonKoo Kwak


DS Kim


Daniel ES Kim



Car Connectivity

Latest News

There is no news posted at the moment
Please leave a message of support for the team

go to leave a message


AMO Blockchain Economy Simu...

Simulation detailSee also- AMO Blockchain Economy Simulation #1- AMO Blockchain Economy Simulation #2한국어 판은 뒷부분에 있습니다.Real world is much more complex than the simulation. Even if we define a closed system or environment, every element or metric is affected by one or more other elements or metrics within the system. The purpose of defining a closed environment is to eliminate unwanted complexity and make the problem simpler. In this article, we will explore some of the relations between key economic metrics assuming all else equal and constant.Before we begin, let’s look at the following graph first.Full simulation resultAs the caption says, it is a capture image of a full simulation over the range of 5,000 days. It encompasses changes of monetary assets, important metrics directly induced from them, and, most importantly, long-run and short-run exchange rates. As we mentioned in the previous article, the price level is the most important metric and drives the overall exchange rate change.Since the variables are affecting each other all the way, it is rather complex to explain why the graph is like this at a single shot. So we will begin our explanation from the relations between variables within the local money market.The first thing to note is the price level. It is a general indication of prices of goods traded in the local product market. The exact definition of the price level may vary in scale. So, just take this variable as a relative one, and focus on the relative change rather than the exact value. We take the price level as follows: P = (M × V) / (Y × (1 — R)), where V is a money velocity fixed at a constant and Y is a production output of the economy given as a simulation parameter, i.e. controlled outside the simulation. M is the money supply and R is the interest rate. They are simulation state variables and affected by the chain of relations between various variables, but we will talk about this later.The price level changeIf we fix M and R, you can see the price level P is almost the opposite of the economy (production) output (left figure). For a given money supply and interest rate, the price level decreases as the sum of products in the market increases. Since the price level is a sticky variable, it would change more slowly compared to other variables. In a full simulation the price level is affected by M and R also. So, the actual trend would be a little more complex (right figure).The local money marketNext, we will look at the local money market. In this market, we focus on 5 metrics: AMO coins, stakes, economy (production) output, interest rate, and the price level. To simplify the explanation, we fix the production output and the the price level at constant. You can see the two blue lines: one solid, and the other dashed. One resembles the other, since the interest rate is the result of direct calculation from stakes and reward. As we fix the output level, the amount of reward is fixed as a consequence. Therefore we can say that the interest rate depends only on the sum of stakes. It affects the money demand, the money demand affects the sum of excess money, and this affects the sum of stakes in turn. This completes a feedback loop. We used the different time scale to show the rapid change of the interest rate at the beginning of the simulation (left figure). If we put more freedom to the independent variables, things become more complex as in the right figure.The exchange rateOur ultimate interest is on the exchange rate of AMO coin. While the dynamics of the currency exchange market is complex, its apparent output is rather simple to explain. As explained in the previous article, there two kinds of exchange rate to be concerned: long-run exchange rate and current exchange rate. The long-run exchange rate is not a real metric. Rather it is an expected value in the future and directly calculated from the price level according to the PPP(purchasing power parity) condition. You can see the thick green line, almost the mirror image of the price level. The current exchange rate is a moving variable. It is adjusted from the IP(interest parity or interest rate parity) condition. It may change abruptly due to the difference between interest rates of USD and AMO. However, it follows the long-run exchange rate eventually.Now, we can return to the full simulation result again. Interesting thing is that even if we apply the same rule for every simulation step throughout the whole process, we can observe distinctive phases showing different trends. We will describe these phases as the initial settling down, the mid-term development, and the long-term phase. As you may see, there are spiky lines at the very beginning of the simulation. Let’s zoom into those area spanning about 2 weeks.Initial settling downThis is the same graph as the first one, but in different time scale. In the beginning, all the variables move very quickly since they are too far away from the equilibrium points and adjusting power is enormous. It takes several days for them to clear up this initial discrepancy. Notable changes are increasing price level and sum of stakes, decreasing interest rate, and short rise and fall of exchange rate. Since the interest rate is quite low, the price level approximately equals to MV/Y. V is fixed and M and Y are barely changed, compared to their scale. So, nearly unaffected by other factors, the price level just approaches to the equilibrium point determined by them. Unlike the 4th graph, this time the price level is moving, not fixed. Since the price level is increasing, the money demand increases rather sharply. In the beginning, the amount of excess money is huge and this excess money tends to transform into more profitable assets, stakes. The increasing stakes lowers the interest rate, and this will lower the increase rate of the money demand. So the money demand settles down to some local equilibrium point. At this stage, after one week or so, the initial settling down seems to be completed. Now the economy starts to adapt to these initial changes at a more relaxed pace.In this time scale, economy output shows an observable change. It triggers other chain reactions. Without it, the economy would stay steady after the initial settling down completes. Increasing economy output means more goods in the product market and more transactions to process the trade deals. It results to slightly decreasing price level and increasing interest rate. Recall that more transactions give more rewards and higher interest rate as a result. Decreasing price level and increasing interest rate both contribute to the decreasing money demand. Eventually, the sum of stakes rises past the point where it exceeds the sum of active AMO coins. As we discussed earlier, the long-term expected exchange rate is determined by the price level. The current exchange rate is quite quick, and it quickly follows the long-term expected exchange rate. This is because there is no sudden impact from the outside. If there is any, then we may observe the exchange rate overshooting.At last, we return to the first graph again. The pace continues until there is a ongoing significant gap between the money demand and money supply(sum of active AMO coins). This gap is a result of steadfast rewards from the transactions. At this stage, excess money supply hold up the price level which decreased so far. Now, the major driving force stops to change and the exchange rate also stops to change.Until this point, it takes roughly 1,700 days, about 4 and a half years. After this, the exchange rate stays at the level of several tens of dollars per AMO coin. Hooray! But really? Just cast the hats to the sky and rejoice? What about the period when the exchange rate is too low, even less than 0.001 USD/AMO? Suffer for 4 years with that? 😩 But wait. 20,000 times the value in 4.5 years! Wow! 😁 Should we smile or frown?We cannot be either simply happy or totally sad. Keep it mind that the simulation runs on relative variables, both in amount and time scale. So it is a good idea to forget about the absolute labels on x- and y-axes. There are two things important in this simulation result. One is that the long-term pace and trend is determined by the economy output, i.e. the sum of values of products in the product market. Another is that the majority of the AMO coins would be locked as stakes. The exact scale of values and time may change with different simulation settings. But these are our lessons. Output is the boss. Mostly stakes.Actual simulation source code and a technical paper describing concrete theoretical background of the simulation will be provided via our github repository. The paper would be published some journal or a public archive soon.In the next article, we will discuss about other economic settings than AMO blockchain.AMO 블록체인 경제 시뮬레이션 #3시뮬레이션 과정현실 세계는 시뮬레이션보다 훨씬 복잡합니다. 닫힌 시스템이나 환경을 정의하더라도 모든 요소들이나 지표들이 시스템 안의 또 다른 요소들이나 지표들에 영향을 받게 됩니다. 닫힌 시스템을 정의하는 목적은 원치 않는 복잡도를 제거하고 문제를 보다 간단하게 만들기 위한 것입니다. 이 글에서는 다른 모든 것이 그대로일 때 주요 경제 지표들 간의 관계가 어떻게 되는지를 살펴볼 것입니다.우선 첫번째 그래프를 보도록 하겠습니다.전체 시뮬레이션 결과이 그래프는 그림 설명에 있듯이 5,000일에 걸친 전체 시뮬레이션 결과의 캡쳐 이미지입니다. 여기에는 금전 자산들의 변화와 거기에서 바로 유도되는 주요 지표들, 그리고 가장 중요한 것으로 장기와 단기 환율이 나타납니다. 이전 글에서 언급한 것처럼 가격 수준(price level, 물가)이 가장 중요한 지표이고 환율의 전체적인 변화를 주도합니다.각 변수들은 끊임 없이 서로에게 영향을 주기 때문에 이 그래프가 왜 이런 모양이 되는지를 한 번에 설명하기는 쉽지 않습니다. 따라서 일단 지역화폐시장(local money market)의 변수들 사이의 관계부터 설명하기로 하겠습니다.제일 먼저 살펴볼 것은 가격 수준입니다. 이는 지역 상품 시장에서 거래되는 재화의 가격을 대략적으로 나타낸 것입니다. 가격 수준의 엄밀한 정의는 그 규모에서 차이가 날 수 있습니다. 따라서 이 변수는 상대적인 수준을 나타내는 것으로 간주하고, 정확한 값보다는 상대적인 변화에 주목하기로 합니다. 가격 수준은 다음 수식으로 나타냅니다: P = (M × V) / (Y × (1 - R)), 여기에서 V는 화폐유통속도(money velocity)라 하며 상수로 주어지고 Y는 이 경제체제의 생산량이며 시뮬레이션 인자로 주어집니다. 즉, 시뮬레이션 외부에서 제어하는 값입니다. M은 화폐 공급량이고 R은 이자율입니다. 이들은 시뮬레이션의 상태 변수들이고 여러 변수들 간에 꼬리를 무는 관계에 의해 영향을 받습니다. 이에 대해서는 뒤에 설명하겠습니다.가격 수준 변화만약 M과 R을 고정하면 가격 수준 P는 생산량(output)의 거의 반대 그림이 되는 것을 볼 수 있습니다(왼쪽 그림). 화폐 공급량과 이자율이 주어지면 생산량이 늘어나는 것에 맞추어서 가격수준이 낮아집니다. 가격 수준은 쉽게 변하지 않는 변수이기 때문에 다른 변수들에 비해 더 늦게 변화합니다. 전체 시뮬레이션 결과에서는 가격 수준이 M과 R에도 영향을 받습니다. 따라서 실제 변화 양상은 이보다 더 복잡하게 됩니다(오른쪽 그림).지역화폐시장다음으로 지역화폐시장(local money market)을 살펴보겠습니다. 이 시장에서 주목해야 하는 지표는 AMO 코인, 스테이크, 생산량, 이자율, 그리고 가격 수준 등 5가지입니다. 설명을 간단하게 하기 위해서 생산량과 가격 수준을 상수로 고정해 보겠습니다. 실선과 점선으로 된 두 개의 파란 선을 볼 수 있습니다. 서로 닮아 있는 모양인데, 이는 이자율이 스테이크와 코인 보상으로부터 바로 계산되는 값이기 때문입니다. 생산량을 고정하면 결과적으로 코인 보상도 고정됩니다. 따라서 이자율이 스테이크의 양에만 의존한다고 할 수 있게 됩니다. 이는 화폐 수요에 영향을 주고, 화폐 수요는 잉여 화폐의 양에 영향을 주고, 다시 스테이크의 양에 영향을 주게 돼서 되먹임 순환(feedback loop)이 완성됩니다. 위 그래프에서는 시간축의 축적을 다르게 했는데 시뮬레이션 초기에 급격하게 변화하는 이자율을 보다 잘 보여주기 위한 것입니다(왼쪽 그림). 독립된 변수들에 자유도를 주게 되면 오른쪽 그림과 같이 변화 양상은 더 복잡해집니다.환율우리가 종국게 궁금해 하는 것은 AMO 코인의 환율입니다. 외환시장을 변화하게 하는 원리는 다소 복잡하지만 결과적으로 보이는 모습은 의외로 간단히 설명할 수 있습니다. 이전 글에서 설명한 것과 같이 우리가 주목하는 환율은 장기 예상 환율(long-run expected exchange rate)과 현재 환율(current exchange rate)입니다. 장기 예상 환율은 실제의 지표는 아닙니다. 말 그대로 미래에 도달할 것으로 예상되는 환율이고, PPP(purchasing power parity, 구매력 평형) 조건에 의해서 가격 수준으로부터 직접 계산됩니다. 그림에서 두꺼운 녹색 선으로 나타나며 가격 수준과 거의 반대되는 모양입니다. 현재 환율은 IP(interest parity or interest rate parity, 이자율 평형) 조건에 의해서 조정되는 변수입니다. USD와 AMO의 이자율 차이에 의해 급격하게 변화하는 것도 가능합니다. 하지만 결국은 장기 예상 환율을 따라가게 됩니다.이제 다시 전체 시뮬레이션 결과로 돌아오겠습니다. 흥미로운 것은, 시뮬레이션의 전과정에서 모든 스텝에 같은 규칙을 적용하더라도 서로 다른 양상을 보이는 구분되는 영역으로 나뉘게 된다는 것입니다. 이들을 각각 초기 안정화, 중간 변화, 그리고 장기간 변화로 설명하겠습니다. 보이는 바와 같이 시뮬레이션의 초기에는 뾰족한 선들이 있습니다. 약 2주 정도 되는 이 기간을 확대해서 살펴보겠습니다.초기 안정화이 그림은 처음 그래프와 같은 것이지만 시간축만 다릅니다. 초반에 모든 변수는 대단히 신속하게 움직이는데, 이것은 이들이 평형점으로부터 많이 떨어져 있어서 이를 조정하려는 힘이 아주 크게 작용하기 때문입니다. 초기의 이 차이를 해소하는 데에는 며칠이 걸립니다. 주목할만한 변화는 가격 수준과 스테이크의 증가, 이자율의 감소, 그리고 짧게 상승했다가 하강하는 환율 변화입니다. 이자율이 아주 낮은 상황이기 때문에 가격 수준은 대략 MV/Y와 같다고 볼 수 있습니다. V는 고정돼 있고 M과 Y는 비율로 보면 거의 변하지 않습니다. 따라서 가격 수준은 이들 값에 의해서 정해지는 평형점을 향해 접근하게 되는데 이 때 다른 변수들의 변화에는 영향을 거의 받지 않게 됩니다. 네번째 그래프에서와는 다르게 가격 수준이 고정돼 있지 않고 변화합니다. 가격 수준이 증가하기 때문에 화폐 수요도 급하게 상승합니다. 초기에는 잉여 화폐의 양이 엄청나기 때문에 이 잉여 화폐들은 보다 이익이 높은 자산인 스테이크로 빠르게 전환됩니다. 증가하는 스테이크는 이자율을 낮추게 되고, 이는 화폐 수요의 증가율을 둔화시킵니다. 이를 통해 화폐 수요는 평형점에 도달해서 잠시 안정화됩니다. 대략 일주일 정도가 지난 시점이 되면 안정화도 적당히 완료됩니다. 이제부터 경제 상황은 이 초기의 변화에 적응하면서 변화하는데 훨씬 느슨한 속도로 진행됩니다.시간축을 이 정도로 바꾸면 생산량의 변화가 눈에 띕니다. 이는 다른 연쇄 반응들을 일으킵니다. 이것이 없었다면 경제 상황은 초기 안정화가 끝난 이후에 그대로 유지되었을 것입니다. 생산량의 증가는 상품 시장에서 더 많은 재화가 거래된다는 것을 의미하고 이를 위해 더 많은 거래가 처리돼야 합니다. 이 결과로 가격 수준(물가)도 다소 낮아지고 이자율을 상승합니다. 더 많은 거래가 처리되면 더 많은 코인 보상이 생기고 이것이 더 높은 이자율을 낳게 됩니다. 가격 수준의 감소와 이자율의 상승은 모두 화폐 수요를 감소시킵니다. 결국에는 스테이크의 양이 계속 증가해서 자유롭게 유통되는 AMO 코인의 양보다도 많아지게 됩니다. 이전에 살펴본 봐와 같이 장기 예상 환율을 가격 수준에 의해서 정해집니다. 현재 환율은 기민하게 움직여서 장기 예상 환율을 신속하게 따라가는데, 이는 외부로부터 유입되는 갑작스런 충격이 없기 때문입니다. 만약 있었다면 환율의 오버슈팅(overshooting) 현상을 볼 수도 있을 것입니다.이야기가 흘러서 우리는 다시 처음 그래프로 돌아옵니다. 지금까지의 양상은 화폐 수요와 공급(자유로이 유통되는 AMO 코인의 양) 사이에 지속적인 차이가 발생할 때까지 계속됩니다. 이 차이는 거래가 처리될 때 생기는 코인 보상도 계속해서 생기기 때문에 발생합니다. 이 단계에 이르면 지금까지 감소하던 가격 수준을 잉여 화폐 공급이 떠받칩니다. 전체적인 변화를 주도하던 변수가 이렇게 멈추고, 환율 변화도 멈춥니다.여기까지 대략 1,700일 정도, 즉 4년 반 정도의 시간이 소요됩니다. 이후에 환율은 AMO 코인당 수십 달러 정도의 수준에서 머물게 됩니다. 만세를 부를만 합니다. 그런데 정말일까요? 모자를 던지고 환호하기만 하면 되는 걸까요? 환율이 아주 낮은 기간, 그러니까 0.001 USD/AMO도 되지 않는 기간은 어떡할까요? 4년이 넘는 기간을 감내해야 할까요? 😩 그런데 잠깐 만요. 4.5년만 버티면 가격이 무려 20,000 배도 넘게 오릅니다! 우와! 😁 웃어야 할까요, 울어야 할까요?마냥 즐거워하거나 낙담할 필요는 없습니다. 이 시뮬레이션은 상대적인 변수들에 기대서 실행된 것입니다. 양적으로나 시간 면에서나 모두 말입니다. 그러니 x축과 y축의 절대값 레이블들은 잊는 게 좋습니다. 이 시뮬레이션에서 얻을 수 있는 중요한 점은 두가지입니다. 하나는 장기적인 변화의 방향과 속도는 경제시스템의 생산량에 의해서 좌우된다는 점입니다. 즉 상품 시장에서 거래되는 재화 가치의 총합을 말합니다. 또 다른 것은 AMO 코인의 대다수는 스테이크로 잠기게 된다는 점입니다. 개별 변수들의 스케일이나 시간축의 척도는 시뮬레이션을 어떻게 설정하는가에 따라서 달라지게 됩니다. 얻을 수 있는 바는 다음과 같습니다. 생산량이 관건. 대부분은 스테이크.실제 사용된 시뮬레이션의 소스코드와 이 시뮬레이션의 이론적 배경에 대한 보다 견고한 설명을 담은 논문은 저희의 github 저장소를 통해서 공개될 예정입니다. 해당 논문은 관계 저널이나 공개 아카이브 사이트에 공개될 예정입니다.다음 글에서는 AMO 블록체인 외에 다른 경제 체제에 대해서 알아보도록 하겠습니다.AMO Blockchain Economy Simulation #3 was originally published in AMO Labs Official on Medium, where people are continuing the conversation by highlighting and responding to this story.


20. 02. 06

AMO Blockchain Economy Simu...

Market dynamicsSee also- AMO Blockchain Economy Simulation #1- AMO Blockchain Economy simulation #3한국어 판은 뒷부분에 있습니다.World is changing. So is the economy. It’s hard to imagine a market in eternal equilibrium. It is not because we cannot rely on equilibrium. Actually, it is because the equilibrium point is also changing. If we eliminate all the varying external interferences, the market may stay in equilibrium state. This may include a state where some of the metrics affects each other and the market is oscillating around some static point. But we may consider this state as in equilibrium also. No external interference, then stays in equilibrium. However, as we stated earlier, the equilibrium point is changing, so the market moves towards a new equilibrium point, ever changing. In this article, we will explorer how we could set an equilibrium point in a given circumstances, and how the market should move towards this equilibrium point.We can set a basic principle regarding supply and demand: if the supply is higher than the demand, then the price would fall. The opposite is also true. We may develop full stories from the scratch, but we won’t. We can borrow some well-established classic economics theories for two markets we are interested: the local money market and the currency exchange market.Local money marketThe term local in local money market is not a regional concept. It means there is no other external currency than the native one. For AMO blockchain, there is only one currency, AMO coin. In local money market, money and other monetary assets are traded. As stated in the previous article, AMO coin constitutes M0 money(cash), and we have M2 money as stakes. There is neither M1 nor M3 money. According to the classic economics, local money market acts on M0+M1 assets and other interest-giving assets including M2+M3 assets. In our case, AMO coin and stakes are traded in the local money market.Since this is a “money” market, we consider supply and demand for money, not other goods or assets. Money supply is simple: total sum of AMO coins. However, it is rather complex for money demandIt is determined by the price level(P), the interest rate(R) and product output(Y). Here, the price level is for the product market, not money market. It means that if the price level is high, then more money is required to support the product market transactions. L(R, Y) is called a liquidity function and drives overall money demand. It shrinks when the interest rate of M2 asset is high. People would prefer to keep interest-giving assets, rather than to sell the M2 assets and acquire more liquid money. An opposite story applies when the interest rate is low. It is also a function of product output. It is comparable to GDP of the economic system, or simply the sum of product values in the product market. More deals in the market? Then more money is required to handle them. It is quite enough to state the relations for now, but we need a concrete formula for this liquidity function to run a simulation. For the exact formula, see our technical paper that would be published soon.The market reaches the equilibrium when the supply and the demand matches. But how to achieve this? With the money demand and supply at any given time, we can simulate how the local money market moves. If the demand is higher than the supply, the sum of AMO coins would grow in exchange of M2 assets. At the same time, the price level would be gradually reduced to match the lack of money in the market, though the rate of change is different. There is a long chain of dependency between the money supply and the interest rate, but not so direct. To make the story simple, we assume the money supply does not affect the interest rate.It might be strange to say, but the price level change is the most important driving force. It will determine the long-term change of the currency exchange market.Currency exchange marketFor the holders who bought AMO coins in early ICO stage and kept them until now, the paramount concern would be the expected value of AMO coin in the future. This market is closely related to this matter.In currency exchange market, more than one currency are traded for each other. As we said in the previous article, we take two currencies: USD and AMO coin. According to the modern economics theory, the currency exchange market is in equilibrium when the benefit(return rate) from acquiring USD is equivalent to that from AMO coin. But the story is not so simple. It involves the interest rates from each of the currencies and the long-term expected exchange rate between two currencies.interest parity conditionThe above equation is called the IP(Interest Parity) condition. The variable R is for the interest rate for each of USD and AMO coin. The variable E is for the current exchange rate and the superscript e designates a long-term expected exchange rate. The detailed description of the IP condition can be found in a textbook of international economics. Since we don’t have the control over USD market, R_dollar is considered as given and stays constant throughout the simulation. E is the target we want to figure out, but long-term E is not clear right now.The long-term expected exchange rate is determined by the PPP(Purchasing Power Parity) condition.purchasing power parity conditionOK, we got as in the above equation. But how? PPP condition assumes the purchasing power tends to be equivalent across the borders. The variable P is for the price level for each of USD and AMO product market. The condition states that the long-term value of a currency tends to link with the price level of the corresponding product market. The PPP condition is interesting on its own, but we are particularly interested because it completes the IP condition formula. And again, this condition is completed from the price level described in the previous section. In other words, the price level drives the overall value trend of AMO coin. The price level is determined in turn by the product output and the amount of liquid money as described when we talk about the local money market.Approach functionsSo, we have all the required chain of relations between various variables: from production output to the exchange rate. But it is not enough. Some variables are very quick to change, while some are rather sticky. An outstanding example of a quickly changing variable is the exchange rate. It dramatically changes in daily basis, or even in minute-by-minute. In contrast, the price level is considered rather sticky. It is true that the price level changes in enormous rate in extreme circumstances. However, it seems widely accepted that the price level is sticky compared to other economic factors. To simulate these differences, we introduced three different approach functions: short-run, mid-run and long-run changes. They have all the same shape, but different scales.So far, we described the major market dynamics. What shall we get if we combine those together? Let’s talk about that in the next article.AMO 블록체인 경제 시뮬레이션 #2시장 변화 원리세상은 변하고 경제도 그렇습니다. 영원히 평형 상태에 있는 시장이란 것은 상상하기 힘듭니다. 시장의 평형 상태란 것을 믿을 수 없기 때문에 그런 것은 아닙니다. 실은 이 평형 지점이란 것도 변할 수 있는 것이기 때문입니다. 만약 변화무쌍한 외부로부터의 간섭 요인을 모두 없앨 수 있다면 시장은 평형 상태에 머무르게 될 겁니다. 시장 지표들이 서로 영향을 줘서 시장이 어떤 지점 부근에서 공진할 수는 있겠지만 이마저도 일종의 평형 상태라 할 수 있을 것입니다. 외부 간섭이 없다면 평형 상태에 머무릅니다. 하지만 앞서서 이야기한 바와 같이 평형점도 역시 변합니다. 자연히 시장은 이 새로운 평형점을 향해 움직이고 결국 계속 변하게 됩니다. 이 글에서는 주어진 상황에서 평형점을 어떻게 정할 수 있는가 하는 것과 시장이 이 평형점을 향해 어떻게 움직일 것인가를 이야기하겠습니다.우선 수요와 공급에 대한 기본 원리를 세울 수 있습니다: 공급이 수요보다 높다면 가격은 떨어집니다. 반대도 마찬가지입니다. 물론 이 원리에서 출발해서 바닥부터 모든 이야기를 만들 수 있겠지만 그렇게 하지는 않겠습니다. 이미 잘 정립된 고전 경제 이론들을 빌려와서 우리가 관심을 갖고 있는 두 가지의 시장, 즉 지역화폐시장과 외환시장에 적용해 보고자 합니다.지역화폐시장“지역화폐시장”에서의 “지역”은 지리적인 개념은 아닙니다. 고유 화폐 한가지를 제외하고 다른 화폐가 없다는 의미입니다. AMO 블록체인에서는 AMO 코인이라는 하나의 화폐만 있습니다. 지역화폐시장에서는 이 화폐와 다른 금전 자산들이 거래됩니다. 이전 글에서 이야기한 것과 같이 AMO 코인은 M0 화폐(현금)가 되고, “스테이크”라는 M2 화폐도 있습니다. M1이나 M3 화폐는 없습니다. 경제학 이론에 따르면 지역화폐시장은 M0나 M1로 분류되는 자산과 M2나 M3로 구분되는 이자를 제공하는 자산들에 작용합니다. 우리의 경우에는 AMO 코인과 스테이크가 지역화폐시장에서 거래됩니다.우리가 다루는 것이 “화폐” 시장이기 때문에 주로 생각하는 것은 재화나 다른 자산이 아닌 바로 화폐의 공급과 수요입니다. 화폐 공급은 간단합니다. AMO 코인의 총량입니다. 하지만 화폐 수요는 조금 복잡합니다.화폐 수요화폐 수요는 가격수준(P, price level, 물가)과 이자율(R), 생산량(Y) 등에 의해 결정됩니다. 여기에서 가격수준은 화폐시장이 아니라 재화시장에 대한 것입니다. P가 관계하는 부분은, 가격이 높아지면 재화시장에서의 거래들을 떠받치기 위해 더 많은 화폐가 필요하다는 것입니다. L(R, Y)은 유동성 함수라고 부르며 전반적인 화폐 수요를 움직입니다. M2 자산의 이자율이 높아지면 줄어드는데, 사람들은 M2 자산을 팔아서 유동성 있는 화폐를 더 확보하기보다는 이자를 주는 자산을 더 유지하는 걸 더 선호하게 됩니다. 이자율이 낮아지면 반대가 됩니다. 유동성 함수는 또한 재화 생산량에도 영향을 받는데, 해당 경제체계의 GDP라고 볼 수도 있고 간단히는 재화시장에 있는 재화가격의 총합이라고 봐도 됩니다. 시장에서 더 많은 거래가 있다면 그것을 다 처리하기 위해 더 많은 화폐가 필요해집니다. 일단은 이들 사이의 관계만 설명하는 것으로 충분할 듯 합니다. 하지만 시뮬레이션을 돌리려면 이 유동성 함수에 대한 보다 명확한 수식이 있어야 합니다. 정확한 수식은 이후에 공개될 논문을 참고하시기 바랍니다.시장은 공급과 수요가 맞아떨어질 때 평형을 이룹니다. 하지만 어떻게 이런 일이 일어날까요? 어떤 순간에 화폐 수요와 공급이 주어지면 지역화폐시장이 어떻게 움직일 지 시뮬레이션할 수 있습니다. 수요가 공급보다 높으면 AMO 코인의 총량은 늘어나고 상응하는 양만큼 M2 자산이 줄어듭니다. 동시에 가격수준도 화폐양이 모자라는 시장에 맞추기 위해 점차 줄어들게 됩니다. 물론 변화하는 정도는 서로 다릅니다. 화폐 공급은 여러 단계를 거쳐 결국은 이자율에 영향을 주게 되지만, 직접 영향을 주진 않습니다. 일단은 이야기를 간단하게 하기 위해서 화폐 공급은 이자율에 영향을 주지 않는다고 가정하기로 합니다.조금 이상하게 들릴 수도 있긴 하지만, 가격 수준이 모든 것을 움직이는 가장 중요한 요소가 됩니다. 왜냐하면 외환시장의 장기 변화를 결정하기 때문이죠.외환시장초기 ICO 단계에서 AMO 코인을 구매해서 지금까지 보유하고 있는 사람들에게는 미래에 AMO 코인의 예상가격이 어떻게 될 것인지가 가장 중요한 관심사일 것입니다. 외환시장은 이와 아주 밀접환 관계가 있습니다.외환시장에서는 둘 이상의 화폐가 서로 거래됩니다. 이전 글에서 이야기한 바와 같이 USD와 AMO 코인이라는 두 가지의 화폐를 다룹니다. 현대 경제학에 따르면 USD를 보유할 때 얻는 이득(수익률)과 AMO 코인을 보유할 때 얻는 이득이 일치할 때 외환시장은 평형을 이룹니다. 하지만 이야기가 마냥 간단치만은 않습니다. 각 화폐로부터 발생하는 이자율과 두 화폐 사이의 장기 예상 환율 등이 영향을 줍니다.금리 평형 조건위 방정식은 금리 평형(IP, interest parity) 조건이라 부릅니다. 변수 R은 USD와 AMO 코인 각각의 이자율을 나타냅니다. 변수 E는 현재 환율이고 위첨자 e가 붙은 것은 장기 예상 환율입니다. IP 조건의 자세한 설명은 국제 경제학 교과서를 참고하시기 바랍니다. USD 기반의 시장은 제어할 수 없기 때문에 R_dollar는 주어지는 값으로 간주되고 시뮬레이션 내내 고정됩니다. E는 우리가 알고자 하는 값이고 장기 예상 E는 아직 어떻게 해야 할지 확실치 않습니다.장기 예상 환율은 구매력 평형(PPP, purchasing power parity) 조건에 의해서 결정됩니다.구매력 평형 조건위 방정식과 같이 구할 수 있습니다. 그런데 이건 어떻게 이렇게 된 걸까요? PPP 조건을 이야기할 때는 구매력이라는 것은 국경(경제체계 경계선)을 넘어서도 동등할 것이라고 가정합니다. 변수 P는 각각 USD와 AMO 코인에 기반하는 상품 시장의 가격 수준입니다. 이 조건이 이야기하는 것은 장기적으로 관측되는 화폐의 가치는 해당하는 상품 시장의 가격 수준에 연동된다는 것입니다. PPP 조건은 그 자체로도 인상적이지만, 우리가 주목하는 것은 앞서 설명했던 IP 조건을 완성해 주는 조각이기 때문입니다. 거기에 더해서, 이 PPP 조건은 이전 절에서 설명한 가격 수준에 의해서 완성됩니다. 다른 말로 하자면, 가격 수준이 결국 AMO 코인의 전반적인 가치를 움직입니다. 이 가격 수준도 재화 생산량과 유동성 화폐의 총량에 따라서 결정되는데, 이는 지역화폐시장에서 설명한 바와 같습니다.접근 함수이렇게 되면 재화 생산량에서 환율까지 이어지는 다양한 변수들 간에 연결이 이루어졌습니다. 하지만 아직 부족합니다. 어떤 변수는 대단히 빨리 변화하지만 어떤 것들은 좀 느긋하게 움직입니다. 재빠르게 변화하는 변수의 대표적인 예는 환율을 들 수 있습니다. 일 단위로, 어쩔 때는 분 단위로 엄청나게 변화합니다. 반면에 가격 수준은 상대적으로 느긋하게 변화한다는 게 중론입니다. 가격 수준, 즉 물가도 극단적인 상황에서는 엄청난 속도로 변화하는 게 사실이긴 합니다. 하지만 다른 경제 지표에 비한다면 훨씬 느리게 반응한다고 널리 받아들여지고 있습니다. 이런 변수들의 차이를 시뮬레이션하기 위해서 세가지의 근접 함수를 도입했습니다. 각각 단기, 중기, 장기 근접 함수들입니다. 모두 같은 “모양”을 하고 있지만 빠르기만 다릅니다.이렇게 해서 시장 변화에 대한 주요 사항을 살펴봤습니다. 이들을 다 합치면 어떻게 될까요? 다음 글에서 알아보도록 하겠습니다.AMO Blockchain Economy Simulation #2 was originally published in AMO Labs Official on Medium, where people are continuing the conversation by highlighting and responding to this story.


20. 01. 23

Testnet Schedule until Main...

According to the AMO Roadmap posted on the AMO Labs homepage, AMO blockchain mainnet is scheduled to launch in 1Q 2020. Since it is January now, we are very close to the boasted schedule. The exact launch date is not decided yet, but we set our internal deadline to be around February. Anyway, it is quite an appropriate timing to announce the testnet schedule.We expect two more testnet launches until the mainnet. The first one is supposed to launch around the end of January. The purpose is to test all the features we added so far. There would be a some runs of large-scale tests on the net. The second and the last one is supposed to launch right before the mainnet. Maybe 1–2 weeks before the mainnet. The purpose of the net is to test the safe protocol upgrade feature. The feature is to upgrade the AMO abci app’s protocol version smoothly without hard-fork. When you see this last testnet is up, you may consider all the technical preparation for the mainnet is ready. There would be only handful of wrapping-up jobs remaining.아모랩스 홈페이지에 올라와 있는 AMO 로드맵에 의하면 AMO 블록체인의 메인넷은 2020년 1분기 중에 출시하기로 계획돼 있습니다. 이제 1월이기 때문에 그 스케쥴에 아주 가까이 와 있습니다. 정확한 출시 날짜는 아직 미정이지만 내부적인 데드라인은 2월 중으로 돼 있습니다. 어쨌든, 지금이 그와 관련된 테스트넷 일정을 공지할 적절한 시기인 것 같습니다.계획상으로는 메인넷까지 두번의 테스트넷 출시가 있을 예정입니다. 첫번째는 1월의 마지막 언저리에 있을 것 같습니다. 목적은 지금까지 추가된 기능들을 시험하기 위한 것입니다. 아마도 대단위의 시험이 몇 차례 있을 것 같습니다. 두번째이자 마지막은 메인넷 직전이 될 것입니다. 아마도 메인넷 전 1–2주 전이 될 것입니다. 이 테스트넷의 목적은 안전한 프로토콜 업그레이드 기능을 시험하기 위한 것입니다. 이 기능은 AMO abci app의 프로토콜 버전을 하드포크 없이 부드럽게 업그레이드하기 위한 것입니다. 이 마지막 테스트넷이 올라온 것을 보시게 되면, 그 때는 메인넷을 위한 모든 기술적인 준비는 끝났다고 생각하셔도 될 것 같습니다. 몇가지 소소한 마무리 작업만 남게 될 겁니다.Testnet Schedule until Mainnet Launch was originally published in AMO Labs Official on Medium, where people are continuing the conversation by highlighting and responding to this story.


20. 01. 20

AMO Blockchain Economy Simu...

Assets, markets and actorsSee also- AMO Blockchain Economy Simulation #2- AMO Blockchain Economy Simulation #3한국어 판은 뒷부분에 있습니다.We all want to predict the future somehow. Especially, we are desperate to know the future of our economy. But, humans are unpredictable. So, the economy is unpredictable too. Even if we have super-powerful computing devices and super-large memory to store all the state of every asset, it is not possible to predict the exact future. The same goes in the blockchain economy prediction. But, we cannot just give up. We do our best to grasp the nature of the economic change, if not exact forecasting formula. Fortunately, we don’t need to start from scratch. There are enormous number of books, articles and talks from economics field, all having different aspect, viewpoint and depth. We can borrow some of the economics theories to the blockchain economy study. In this series of articles, we use rudimentary theories only.Unlike the real-world economy, blockchain economy has some unique features. First, it is difficult to define boundaries of a nation, i.e. a closed economic system. Due to that, it is also difficult to define export and import mechanism. Second, it is difficult to define banking mechanism. Modern economics theories state that money can be defined in various ways: from M0 to M3. Aside M0(cash), money defined as M1, M2 or M3 are closely related to banking system or securities. There may be a cryptocurrency-based banking system in the future, but it is not the story for now. Third, (actually it is partly related to the second argument) it is difficult to define market interest rate. In addition to the banking system, modern economy is hugely dependent on financial system: a system that allows lending and borrowing money in a very complex manner. An interest comes from lending money. There may always be a private financial transactions(lending and borrowing). However, without systematic financial system and survey mechanism, it may be difficult to define a market-wide interest rate.So, we have three major obstacles to apply real-world economics theories to blockchain economy. This series of articles are our effort to overcome those obstacles. We tackle these in later articles explaining economic dynamics. Before that, let’s explain basic elements of our economy simulation: assets, markets and actors in the markets.Most obvious asset is AMO coin. It is natural to consider this as M0 money(cash). When considering money demand or money supply, we handle this M0 money only. In real world, demand deposits or checking accounts may constitute a part of exchange medium or M1 money. However, we don’t take account of this in our simulation due to the lack of banking system. The second category of assets is staked coin, or simply stake. In a DPoS-based blockchain, a stake is acquired by locking some of owned coins. The coins locked as stake are not freely disposable. In AMO blockchain, one cannot transfer his/her stake to another account, either cannot withdraw unless some conditions are met. In other words, they have low liquidity. These assets may be considered as M2 money and also give interests. We don’t take these assets as money when considering money supply or demand in a local money market, since they are not so liquid to be used as a exchange medium(neither M0 nor M1).Economy without market does not make sense. We can imagine various kinds of markets regarding trade of goods. We presume the existence of those markets, but we will not dig into these kinds of markets directly. The markets we focus on are money markets: local money market and foreign exchange market.The local money market is considered to exist within imaginary boundaries of AMO coin economy. In this market, monetary assets are traded. There are only two kinds of monetary assets, and they can be transformed into another. For example, one can lock AMO coins(staking) to acquire stakes. This will reduce the amount of AMO coins and increase the equivalent amount of stakes, and vice versa. However, since stakes are less liquid assets, it takes time to transform stakes into AMO coins. When money demand(demand for exchangeable money) is high, people want to withdraw stakes and change them into AMO coins.An foreign exchange market deals with multiple currencies. In our simulation, there are two kinds of currencies: AMO coin and US dollar. There is no special reason for selecting USD. It may be any other popular currency. It just need to be widely accepted and relatively stable compared to AMO coin. In a foreign exchange market, people spend USD to acquire AMO coin, or vice versa. Since USD is relatively stable, USD price per AMO coin is considered to be the value of AMO coin. In our simulation, we call this price as the exchange rate.So, we have assets and markets where the assets are traded. And there need to be actors in this market. We define two kinds of actors: general users and validators. General users are people who want to hold AMO coins in their account, spend AMO coins to buy some products, or accept AMO coins to sell the products. They are normal buyers and sellers in the product market. They may develop more complex trading mechanism, but we do not care. We consider these actors collectively. Just assume their should be an average price level in the product market. Validators, however, are special actors in this economy. They don’t buy or sell products. Their main reason for existence is to operate the blockchain itself. As per AMO blockchain, anyone should acquire stakes before participating in operating the blockchain. Validators receive reward from the action. In economic sense, this situation can be translated as they receive interest from locked coins (= stake). The reward is not dependent on the sum of stakes. It depends on the number of transactions processed per a block, and the number of blocks they produced. Naturally, we can define the interest rate to be the ratio between reward and the sum of stakes. In this way, we have a variable interest rate as in the real world.Here, we got basic elements constituting AMO blockchain economy. In the next article, we will describe the dynamics governing the market and actors’ behavior.AMO 블록체인 경제 시뮬레이션 #1자산, 시장, 주체우리 모두는 어떻게든 미래를 알고 싶어합니다. 특히나 우리 경제의 미래를 알고 싶어서 노심초사합니다. 하지만 경제주체인 인간은 예측불가능하죠. 따라서 경제도 역시 예측불가능합니다. 우리가 설사 초강력 컴퓨팅 장치를 보유하고 초대량 메모리에 모든 자산의 상태를 기록할 수 있다 하더라도, 정확한 미래를 예측할 수는 없습니다. 이것은 블록체인 경제의 예측에서도 마찬가지입니다. 그러나 그냥 포기해 버릴 수는 없습니다. 정확한 예측을 위한 수식은 없더라도, 경제 변화의 본질을 살펴보기 위해서라도 노력을 해야 합니다. 다행히도 바닥부터 다시 시작할 필요는 없습니다. 이미 경제학 분야에 많은 수의 책이나 기사나 강연이 있었고, 다양한 양상과 관점과 깊이에 걸쳐 있습니다. 이 중 몇몇 경제 이론들을 차용해 와서 블록체인 경제를 연구하는 데 활용할 수 있습니다. 이번 시리즈의 글들에서는 기초적인 경제이론들만을 사용합니다.현실 경제와는 달리 블록체인 경제는 몇가지 특이점이 있습니다. 첫째로 국가의 경계, 즉 닫힌 경제 시스템을 정의하기가 어렵습니다. 따라서 수출과 수입 메커니즘을 정의하는 것 역시 어렵습니다. 둘째로 은행 메커니즘을 정의하기가 어렵습니다. 현대의 경제는 화폐를 M0에서 M3까지 다양한 방식으로 정의합니다. M0(현금) 외에 M1이나 M2, M3 등으로 정의되는 화폐들은 은행 시스템이나 채권 시스템과 밀접한 관련이 있습니다. 미래에는 암호화폐 기반의 경제에 은행 시스템이 도입될 수도 있겠으나 현재는 그렇지 않습니다. 셋째로 (이는 두번째 이야기와 관련이 있음) 시장에서의 이자율을 정의하기가 어렵습니다. 은행 시스템 외에도 현대 경제는 다양한 금융 시스템에 의존합니다. 아주 복잡한 방식으로 돈을 빌려주고 빌리는 행위를 가능케 하는 시스템입니다. 돈을 빌려주는 행위에는 이자가 따라옵니다. 개인 간에 빌려주고 받는 금융 거래는 언제든 가능합니다. 하지만 체계적인 금융 시스템과 감시 체계가 없이는 시장 차원에서의 이자율을 정의하기는 어렵게 됩니다.이와 같이 현실 경제를 위한 이론들을 가져다가 블록체인 경제에 적용하는 길에는 장애물들이 있습니다. 이번 시리즈는 이 장애물들을 어떻게 극복할 것인지 알아보려는 시도입니다. 이 문제들은 이후의 글에서 몇가지 경제 원리들을 설명하면서 살펴볼 것입니다. 그 전에 우선 이번 경제 시뮬레이션에서 사용되는 기본 개념들부터 살펴보겠습니다. 바로 자산, 시장, 그리고 시장 참여자들의 이야기입니다.첫번째로 언급할 자산은 AMO 코인입니다. 자연스럽게 이 코인을 M0 화폐(현금)라고 생각해 볼 수 있습니다. 앞으로 화폐 수요나 화폐 공급 등을 이야기할 때 우리는 이 M0 화폐만을 가정합니다. 현실 경제에서는 요구불 예금(demand deposit)이나 결제 계좌(checking account) 등이 M1 화폐를 구성하지만, 이번 시뮬레이션에서는 은행 시스템의 부재 때문에 이들을 고려하지는 않습니다. 두번째 부류의 자산으로 스테이킹된 코인, 혹은 간단히 스테이크를 들 수 있습니다. DPoS에 기반하는 블록체인에서는 자신이 보유한 코인의 일부를 잠그는 행위로 이 스테이크를 획득합니다. 스테이크의 형태로 잠긴 코인들은 자유롭게 거래될 수 없습니다. AMO 블록체인에서는 자신의 스테이크를 다른 계좌로 전송할 수 없고, 일정한 조건이 맞지 않으면 인출(잠금해제)할 수도 없습니다. 다른 용어로는 유동성(liquidity)이 낮다고 합니다. 이 자산들은 M2 화폐로 간주될 수 있고 이자를 제공하게 됩니다. 그런데, 지역화폐시장(local money market)에서 화폐 공급이나 수요를 논할 때의 화폐로 취급하지는 않는데, 이는 교환수단으로 사용되기에는 유동성이 낮기 때문입니다. 즉 M0도 M1도 아닙니다.시장이 없는 경제는 생각할 수가 없습니다. 우리는 재화 등이 거래되는 다양한 형태의 시장을 상상해 볼 수 있습니다. 이번 글들에서는 이런 시장의 존재는 암묵적으로 가정하고 있지만, 이를 직접 깊이 다루지는 않습니다. 대신 우리가 주목하는 시장은 지역화폐시장과 외환시장이라고 불리는 화폐시장들입니다.지역화폐시장(local money market)은 AMO 코인 경제가 미치는 가상의 경계 내에 존재한다고 간주합니다. 이 시장에서 거래되는 것은 화폐자산입니다. 이번 시뮬레이션에는 두가지의 화폐 자산만 존재하는데 이들은 서로 변환 가능합니다. 예를 들어, 누군가가 보유하고 있는 AMO 코인을 잠가서(스테이킹 하기) 스테이크를 얻습니다. 이 때 AMO 코인의 양은 줄어들고 같은 양만큼 스테이크의 총량도 늘어납니다. 반대도 마찬가지이지만 스테이크는 유동성이 낮은 자산이라서 이를 AMO 코인으로 변환하는 데에는 시간이 듭니다. 화폐 수요(교환 수단에 대한 수요)가 높으면 사람들은 스테이크를 인출하여 AMO 코인으로 바꾸게 됩니다.외환시장(foreign exchange market)은 복수의 통화를 다룹니다. 이번 시뮬레이션에는 두가지의 통화를 다루는데 AMO 코인과 US 달러화입니다. USD를 선택한 특별한 이유는 없습니다. 흔히 통용되는 어떤 통화여도 됩니다. 단, 널리 통용되어야 하고 AMO 코인에 비해서 상대적으로 안정적이어야 합니다. 사람들은 외환시장에서 USD를 소비하여 AMO 코인을 얻거나 혹은 반대의 행위를 할 수 있습니다. USD가 상대적으로 안정적이기 때문에 AMO 코인의 달러가격은 AMO 코인의 가치 척도라고 생각해도 무방합니다. 이번 시뮬레이션에서는 이를 간단히 환률(exchange rate)이라고 부르기로 합니다.이렇게 해서 자산을 설명했고 그들이 거래되는 시장에 대해 설명했습니다. 이제 그 시장의 참여자들을 설명해야 합니다. 여기에서는 두가지의 참여자들을 정의합니다. 하나는 일반 사용자들이고 다른 하나는 validator들입니다. 일반 사용자들은 계좌에 AMO 코인을 보유하거나 AMO 코인을 사용해서 어떤 재화를 구입하거나, 또는 재화를 판매하고 AMO 코인을 받는 사용자들을 말합니다. 다시 말해 재화시장에서 보이는 일반적인 구매자와 판매자들을 한꺼번에 부릅니다. 물론 이들이 복잡한 거래 체계를 만들어낼 수도 있겠지만 여기에서는 별로 상관하지는 않습니다. 이들을 뭉뚱그려서 다루기 때문인데, 단지 거기에 평균 시세(price level)가 정해져 있을 거란 가정만 합니다. 반면에 validator들은 특별한 역할을 하는 참여자들입니다. 이들은 재화를 사거나 팔지는 않습니다. 이들의 주요한 존재이유는 블록체인 자체를 운영하는 것입니다. AMO 블록체인의 경우를 보면 누구든 블록체인의 운영에 참여하려면 스테이크를 사전에 보유해야 합니다. Validator들은 이런 행위로부터 보상(reward)를 받습니다. 경제적인 면에서 보면 이 상황은 잠긴 코인들(= 스테이크)로부터 이자를 받는다고 할 수도 있습니다. 이 보상은 스테이크의 양과는 무관합니다. 오로지 블록에서 처리되는 거래(transaction)의 수와 만들어낸 블록의 양에만 관계합니다. 자연히 이자율이라는 것을 스테이크의 양에 대비한 보상의 양으로 정의할 수 있습니다. 이로써 현실에서처럼 변동 가능한 이자율을 얻게 됩니다.여기까지 AMO 블록체인 경제의 기본적인 구성요소들을 설명했습니다. 다음 글에서는 시장과 참여자들의 행위를 관장하는 작동원리에 대해서 이야기하도록 하겠습니다.AMO Blockchain Economy Simulation #1 was originally published in AMO Labs Official on Medium, where people are continuing the conversation by highlighting and responding to this story.


20. 01. 17

AMO Testnet Page Archive

Oh, this is not a new story actually. It is for backing up dev notes originally posted on . The testnet site might be renovated and not host the short notes in near future.Welcome to AMO testnet!AMO testnet has two main purposes:Test functionality and stability of latest S/W snapshot of AMO blockchain.Test third-party business integration.For the first purpose, AMO testnet shall be periodically purged and restarted (about once a month).To see how to connect to the AMO testnet, visit this page.To see blocks the AMO testnet creates, visit AMO blockchain explorer.To see the internals of the AMO blockchain, visit our page.2019–08–30: Dev Story Series in MediumWe’re preparing a new series of stories in AMO Official Blog in Medium. So, this is the last announcement posted in this site. It is still possible to post some emergency notices here, but we will not post any regular notices here any more. You can visit AMO Official Blog to see announcements related testnet operation schedule from now on.2019–08–23: Testnet-190823 readyIt’s up and running now! You can see the validator quick start guide in English version and Korean version.2019–08–22: Testnet-190823 is comingA new testnet will be launched tomorrow. This testnet will begin with 20 billion AMO as its initial faucet account balance. This amount matches the total AMO coins issued before the public AMO ERC20 token sale event. Around 10 billion AMO was sold in the event. Unlike the real world token sale, we will put all the AMO coins to a faucet account, and any user can request AMO coins to the faucet account. Since the user guide documents describing how to launch a validator node have been complete now, we expect some of validators from outside the AMO Labs. These participants need to contact AMO Labs personel to acquire enough amount of AMO coins to stake. Detailed notice will be posted on various channels.2019–07–26: Testnet-190724 readySome of the initial blockchain nodes were launched on Wednesday, but there was a problem with the newly added nodes. We added 3 new validator nodes, and incorporated enlarged storage disks to the back-end storage cluster of AMO storage service. All blockchain nodes and storage nodes are now online. However, AMO storage API server is not ready yet. It complies to AMO storage service spec and undergoing final polishment. It will be online soon. When it is online, there will be a slight change in explorer page to use official storage API.2019–07–22: Testnet-190724 and AMO v1.0It’s getting deeper into the summer, and it’s time to release AMO software version 1.0 (AMO blockchain node software). According to the original plan, the software v1.0 should be feature-complete, and it’s supposed to be polished and optimized until the end of this year. Although there is much room for change in the underlying data structures and internal architecture, the current version(v1.0-beta1) is feature-complete in view of the AMO blockchain protocol spec and AMO storage service spec. We’re planning to release v1.0 on 24th July, this week, and another testnet will be launched on the same day.2019–07–02: Testnet-190617 and faucet serverIt’s been a while since the testnet-190617 with the storage service launched silently. Yes, without any notice. We were waiting for the faucet server to be working properly, and now it IS up and running now. Along with the faucet server, new demo page has been setup. With the faucet feature, now you can try some operations with actual test money. And the demo page and parcel page can handle encryption keys. Try out on the AMO blockchain explorer site now.2019–06–10: Testnet-190527 recoveredAfter days of inconsistency and downtime, the testnet has been fully recovered. It was not a problem in the blockchain node software. Rather it was an operational problem in running master seed node. The seed node has been freshly started. After all, this is a blockchain, and all the necessary blockchain data had been copied in other nodes.Anyway, we are preparing to release ABCI software v1.0-beta1. Along the process, we will restart the testnet several times without notification. This is for testing the crash recovery feature in the blockchain node software. So, the data may or may not be retained.The new strategy for storage service has been set. We are not sticked to PAUST-DB, and new AMO storage service adapter will be introduced. In this strategy, any storage service can be incorporated in AMO infrastructure. With v1.0-beta1 software, we will launch a testing storage service.2019–05–28: Testnet-190527 launchedNew testnet launched with the ABCI software v1.0-alpha6. Now, we have new Demo Page in AMO blockchain explorer. In order to test data parcel trade and see the flow of payment, you need some AMO coins for test purpose. There is a Ask for coin button in the demo account view, but this faucet link is not working right now. It will be working shortly.2019–05–21: Next testnet and native storage serviceWe are undergoing an import discussion about the native storage service of AMO blockchain. Our original plan was to use PAUST-DB, but there is an opinion gaining popularity, which insists that we must use a long-lived and well-tested distributed storage software such as Ceph.Regarding the ongoing discussion, the data upload feature shall be delayed to come, which had been planned to come last week. Until the discussion is resolved, we will provide a demo page showing basic trading feature set, which of course uses generic Data parcel IDs, rather than associated with the actual storage service.In addition, there is a change in digital signature format. So, new testnet will be launched on Friday this week, or Tuesday next week.2019–05–09: Testnet-190509 launchedNew testnet launched. This time, with paust-db as a default storage service. Paust-db supports basic functions including upload, download and delete. According to AMO Storage Service Requirements, any AMO-compliant storage service should implement an access control feature, but there is no user authentication or access control feature yet. Access control will be applied in the next testnet, coming in about two weeks from now.Client features regarding data transfer will be provided next week with the current testnet.2019–05–07: Upcoming testnet with data upload featureTestnet-190509 will be launched on 2019–05–09 13:00 KST. This testnet will implement data upload feature, but with limited size. Users will be able to upload any data, but the upload feature is not tightly bound with the encryption feature. We are currenty finalizing AMO storage service specification, and this document will specify the data parcel format and requirements to support data encryption and key custody handling. Note that data upload feature is not part of AMO blockchain protocol. It shall be handled by clients and AMO storage services, not the blockchain nodes themselves. So, more precisely, this testnet will come along with the default storage service ( PAUST-DB).2019–04–23: Testnet-190423 launchedThe launch was delayed about 3 hours in order to fix a bug in validator update mechanism. Now it’s online (15:00 KST). Unfortunately, there wasn’t enough time to setup a faucet site. It will come soon.2019–04–22: Testnet-190423 launchesThe second testnet will open on 2019–04–23 13:00 KST, using software version v1.0-alpha4. The genesis file can be retrieved from this location. It will come along with a simple faucet site.2019–04–17: Raindrop generator is comingRaindrop script is a low-profile transaction generator. Due to the fix introduced on Apr. 16, blocks are not generated when there is no transactions to process. To stir up some activities in the testnet blockchain and nodes, we are planning to launch a transaction generator. This transaction generator has two P256 private keys †associated with two test accounts. These acounts were given some AMO coins to spend. The transaction generator will occasionally transfer small amount of AMO coins from one account to the other. These transfer transactions are scheduled to be generated once in several tens of minutes. Since this is not a heavy load, we do not call this a load generator. Rather we call this a raindrop generator.† To figure out why we used P256 keys, see this note.2019–04–16: Hot fix for testnet-190415The press release has been postponed until the weekend and there is no serious traffic to this testnet yet. So, there is a chance to update the software before public notice. One noticeable change is that blocks will be created only if there is any transaction to include. Currently a block is created every second even if there is no transaction to process. Technically, this is due to the block reward mechanism and the appHash handling in the tendermint layer. Original configuration was that validators shall receive a reward even for an empty block. Since the tendermint layer records the ABCI app's state change in the NEXT block, not the CURRENT block, a state change coming from the block reward for the block n must be recorded in the next block n+1. This NEXT block n+1 may contain no transactions, but even if the block is empty there shall be a state change due to the reward for the block n+1. And, this state change must be recorded in the block n+2 again. And, another block. And another state change, and another block, and so on...To remedy this problem, block reward for an empty block will be changed to be ZERO. And the block progression will stop if there is no transaction to process.2019–04–15: Testnet-190415 launchesThe first testnet will open on 2019–04–15 12:00 KST, using software version v1.0-alpha2. The genesis file can be retrieved from this location.Thank you for your interest.Originally published at Testnet Page Archive was originally published in AMO Labs Official on Medium, where people are continuing the conversation by highlighting and responding to this story.


20. 01. 06

Governance Mechanism in AMO...

From time to time, there would be an occasion where the majority of the users express they are deeply unhappy with the current configuration of the blockchain. They say it could be better if a certain rule is changed, but this change might be impossible without hard-fork of the chain. If it is really a big issue, then hard-fork may be inevitable. But, for a small, emerging project such as AMO blockchain, there should be delicate tending gestures to encourage users in the early stages of the business, and this would be quite frequent. It is highly probable that these gestures include tweaking some crucial configuration of the blockchain. There are a number of configuration parameters that affect the benefit and cost of the validators and users in AMO blockchain: such reward rate, reward distribution ratio, max number of validators, penalty rate, stake lock-up period and etc. If we do hard-fork every time we need to change these configurations, there might be huge confusion.So, we need some method to change these configuration parameters without hard-fork. Many blockchain projects introduced a decentralized governance mechanism. In generic terms, this governance mechanism decides things via a semi-democratic way. Of course, there is no generally acceptable universal standard for this. There are votings and consensus(different from the consensus algorithm in blockchain protocol) or verdicts, but not everybody has the same votes. Some projects have voting mechanisms woven into the blockchain protocol, but some do this totally outside the protocol. Sometimes, the coverage of the governance mechanism is so broad, that they even decide subjects outside the blockchain protocol, for example whether they should start a hard-fork or not. And sometimes the coverage is restricted to a small area of parameter adjustment. It is up to their goals from this governance mechanism. For AMO blockchain, we need to set a clear goal for this.First, we don’t take the “decide everything” approach. Crowd decisions based on stakes or effective stakes may play a role in various situations, but it’s hard to state a clear rule for that. The crowd may improvise on occasions outside the protocol, but we restrict the role of voting powers to adjusting blockchain protocol parameters. For a detailed list of adjustable parameters, see AMO blockchain protocol specification document.Second, the crowd decides something based on voting powers. Recall that the blockchain consensus algorithm depends on voting powers of validators, and the voting power of a validator is proportional to its effective stakes. The same rule applies here too. The more effective stake, the more power. The effective stake is the sum of own stake and delegated stakes. For the delegated stake, consider a typical voting process for political decision making or election. Most of the modern democratic societies take representative system. People elect relatively small number of representatives, and these representatives take part in most of the important decision making process personally. We take a similar approach. Although anyone can have stakes, a person must acquire validator status in order to take part in a governance process in AMO blockchain. Validator status is acquired by staking more coins or collecting more delegated stakes. A delegator is a kind of supporter for the validator. So this is similar to the representative system in modern democracy.And third, the decision making via voting process is woven into the AMO blockchain protocol. So, some of the voting process is automatic, such as counting yeas and nays, closing the voting period, deciding approval or rejection, and applying changes into the blockchain protocol parameters. In order to start a voting, someone having enough effective stakes posts a proposal onto AMO blockchain via a special transaction. A proposal has a list of parameter values which would be applied to the chain, but the voting process is operated according to the current parameters. However, these parameters are also a part of the whole set of adjustable blockchain parameters. So it is also possible to change voting rule in the future decision making. The parameters related to the voting process are voting period, grace period before actual application of the change, required sum of voting powers for quorum and approval, and etc.Now, let’s describe an example decision making scenario. Suppose some of the users in the chain concluded that they are not satisfied by the current tx_reward rate. They decided to launch a change proposal and found a suitable validator. There might be a series of negotiations between the original users and the selected validator, but those are taken care of totally outside of the blockchain protocol. They reached a conclusion and a final draft of the change was made. Using this draft, the validator formed a propose transaction including the detailed list of protocol parameter changes. Now, the process took place in the protocol. The validator sent the tx to other nodes or included the transaction in the chain when it got the change to produce a block. A propose tx is a kind of notice announcing the upcoming voting process. Until the actual voting started, users and validators might launch a public discussion or a lobbying process to get support from other users, but this is a political or social process and not part of the protocol. Once the chain reached the designated starting block number, validators other than the proposer may cast a vote to or against the proposal(yea or nay) by sending vote transactions. It is assumed that the proposer already voted as yea via the proposal. When the chain reached the designated closing block number, any vote transaction to or against this proposal is not allowed. The protocol count the votes and calculated the sum of voting power of all casts and sum of approving voting power. Now the crowd could reach a conclusion from the protocol: approval or rejection. If the result was approval, the stated parameter change is applied after the given grace period. And the whole process ends and the original proposal can be deleted from the state DB safely(note the history remains anyway). There may be multiple proposals at the same time with varying status, but their changes must not be conflicting with any other live proposals.The decision making process described above may not be perfect. However, it reduces the possibility of hard-fork greatly, resulting into more reliable blockchain.AMO 블록체인의 거버넌스 메커니즘공개형 블록체인에서 사용되는 영어 용어인 governance에 대해서 현재는 널리 인정되는 적절한 번역어가 없는 상태임. 많은 글에서 단순히 “거버넌스”로 표기하고 있기 때문에 이 글에서도 그 방식을 따르기로 함.때때로 다수의 사용자들이 현재 블록체인의 설정에 대한 불만을 표출할 때가 있게 마련입니다. 어떤 규칙 하나를 이러 저러하게 바꾸면 좋겠다고 말할 수 있겠지만, 하드포크 없이는 변경할 수 없을 수 있습니다. 물론 아주 중요한 이슈라면 하드포크를 통해서라도 변경해야겠지요. 그런데, AMO 블록체인과 같이 이제 막 시작하는 프로젝트에서는 사업 초기에 사용자들을 독려하기 위한 미세한 부양책들을 시행해야 합니다. 그리고 꽤 자주 하게 될 수 있습니다. 이런 부양책들은 블록체인의 주요 설정을 만져줘야 하는 것일 가능성이 농후합니다. AMO 블록체인에는 validator들과 사용자들의 이득이나 비용 등에 영향을 주는 다수의 설정들이 존재합니다: 예를 들면 보상 액수, 보상 분배 비율, validator 최대 수, 벌칙 액수, 스테이크 잠금 기간 등등입니다. 이러한 설정들을 바꿀 필요가 있을 때마다 하드포크를 하게 되면 엄청난 혼란이 오겠지요.그래서 하드포크 없이 이런 설정들을 변경할 수 있는 방법이 요구됩니다. 많은 블록체인 프로젝트들이 탈중앙화된 거버넌스 체계를 도입하고 있습니다. 일반적인 용어로 말한다면, 이런 거버넌스 체계는 어느 정도 민주적인 절차에 의해 여러가지 사안들을 결정하는 것입니다. 물론 모두가 동의하는 우주공통표준이 존재하는 것은 아닙니다. 투표와 합의(블록체인 프로토콜의 합의 알고리즘과는 다름)와 결정 등이 있겠지만 모두가 같은 투표권을 가지지도 않습니다. 어떤 프로젝트는 투표 과정을 블록체인 프로토콜 자체에 포함시키지만, 어떤 프로젝트는 투표 과정을 전적으로 블록체인 바깥에서 처리하기도 합니다. 어떤 경우는 거버넌스 체계의 영향 범위가 대단이 넓어서 블록체인 프로토콜의 범위를 넘어서기도 합니다. 예를 들면 하드포크를 수행할 것이냐 말 것이냐를 결정하는 것을 들 수 있습니다. 또 어떤 경우에는 아주 제한된 범위에서 일부 설정 변수들을 조정하는 정도에 머물기도 합니다. 모두 그들이 거버넌스로 얻고자 하는 목표에 따라 다르게 됩니다. AMO 블록체인을 위해서도 방향과 목표를 확실히 정할 필요가 있습니다.첫번째로, AMO에서는 “모든 것”을 결정하는 방식은 취하지 않습니다. 지분이나 유효 지분에 기반해서 군중이 의사결정을 하는 것은 다양한 상황에서 나름의 역할을 할 수 있겠지만, 이에 대한 명확한 규칙을 미리 정하기는 어렵습니다. 따라서, 프로토콜 바깥의 영역에서 군중 스스로가 지분율 등을 활용할 수는 있겠지만 프로토콜에서는 지분율 등의 역할을 블록체인 설정을 조정하는 부분에 제한합니다. 조정 가능한 설정들의 목록은 AMO 블록체인 프로토콜 명세를 참조하시기 바랍니다.둘째로, 군중이 어떤 사안을 결정하는 것은 투표 영향력(voting power, 투표권)에 기반하도록 합니다. 블록체인 합의 알고리즘도 바로 이 영향력에 기반하며, 영향력은 validator가 보유한 유효지분(effective stake)에 비례합니다. 여기에도 같은 규칙이 적용됩니다. 유효지분이 높을 수록 영향력도 높아집니다. 유효지분은 자기지분과 위임받은 지분(delegated stake)의 합입니다. 위임받은 지분과 관련해서는 정치적인 의사결정이나 선거에서 사용되는 투표 과정을 생각해 볼 필요가 있습니다. 대부분의 형대 민주주의 사회에서는 대의제 시스템을 도입하고 있습니다. 사람들은 상대적으로 아주 적은 수의 대표자들을 선출하게 되고, 이 대표자들이 실제 주요 의사결정 과정에 직접 참여합니다. AMO에서도 유사한 접근법을 사용합니다. 지분(stake)은 누구나 가질 수 있지만 AMO 블록체인의 거버넌스 과정에 참여하기 위해서는 validator 지위를 획득해야 합니다. Validator 지위는 코인을 스테이킹하거나 위임을 받아서 획득합니다. 위임자는 해당 validator에 대한 일종의 지지자가 되는 것이고, 이런 방식은 현대 민주주의의 대의제 시스템과 유사하다고 할 수 있겠습니다.세번째로, 투표에 의한 의사결정은 AMO 블록체인 프로토콜 자체에서 지원합니다. 따라서 투표과정에서 찬반을 집계하고, 투표 기간을 열고 끝내고, 가결 및 부결을 결정하고, 블록체인의 설정 변경 사항을 실제로 반영하는 과정 등은 자동으로 수행됩니다. 투표를 시작하기 위해서는 충분한 지분을 확보한 누군가가 제안서를 게시해야 하고, 이는 AMO 블록체인에 특별한 transaction을 전송함으로써 이루어집니다. 제안서에는 변경하고자 하는 설정들의 세부 목록이 기록돼 있지만, 실제 투표 과정은 현재의 설정을 기준으로 실행됩니다. 하지만 이 설정들도 변경 가능한 블록체인 설정 중 일부입니다. 따라서 미래의 의사결정에서 사용될 투표 규칙을 수정하는 것도 가능합니다. 투표 과정과 관련된 설정들에는 투표기간, 설정 적용 전 유예기간, 의결 정족수, 가결 정족수 등이 있습니다.이제 의사결정이 이루어지는 예시를 들어보겠습니다. 사용자들 중 일부가 현재의 tx_reward 설정에 불만을 가지고 있다고 가정하겠습니다. 이들은 변경제안을 하기로 결정하고 적절한 validator를 물색합니다. 원래의 사용자들과 선택된 validator 사이에 몇 번의 협상 과정이 있을 수 있지만, 온전히 블록체인 프로토콜 영역 밖에서 이루어집니다. 이들은 결론에 이르고 변경안의 최종본을 작성합니다. Validator는 이 제안서를 이용해서 propose transaction을 생성하고 여기에는 변경할 설정의 세부사항이 기록됩니다. 이제부터는 블록체인 프로토콜에서 과정을 진행합니다. Validator는 이 tx를 다른 노드에게 전송하거나, 혹은 자신이 직접 블록을 생성할 기회가 됐을 때 직접 체인에 포함시킵니다. 이 propose tx는 앞으로 있을 투표를 공지하는 역할을 합니다. 실제 투표가 시작되기 전까지 변경을 원하던 사용자들이나 validator는 공개 토론을 열거나 로비 등을 벌여서 다른 사용자들로부터 지지를 확보할 수 있습니다. 하지만 이는 정치적/사회적 과정이며 프로토콜의 일부는 아닙니다. 일단 체인의 블록번호가 정해진 투표개시 시점에 이르고 나면 제안자가 아닌 validator들은 vote tx를 전송해서 찬성이나 반대 의사를 표시합니다. 제안자였던 validator는 이미 찬성 의사를 표시했다고 간주됩니다. 체인의 블록번호가 정해진 투표종료 시점에 이르고 나면 더 이상 투표를 할 수 없습니다. 프로토콜은 표를 집계해서 의결 정족수 만족 여부나 가결 여부 등에 대한 결론을 냅니다. 이렇게 집단적인 의사 결정이 가결 혹은 부결로 결론납니다. 가결이었다면 정해진 유예기간 이후에 변경된 설정이 적용되고 전 과정이 종료됩니다. 이후 원래의 제안은 블록체인 상태DB로부터 안전하게 삭제될 수 있습니다(기록은 어찌 됐든 남습니다). 동시에 여러 개의 제안이 활성화 될 수 있으며 각자 단계도 다르고 변경하려는 설정도 다를 수 있습니다. 하지만 이들의 변경 사항이 서로 충돌해서는 안 됩니다.위에 설명된 의사결정 과정이 완벽할 수는 없습니다. 그러나, 이는 하드포크의 가능성을 대단히 많이 줄이게 됩니다. 결국 AMO 블록체인은 보다 안정적인 블록체인이 될 것입니다.Governance Mechanism in AMO Blockchain was originally published in AMO Labs Official on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 12. 27

Old Transactions and Replay...

A blockchain is a decentralized system which has no central authority to ensure or guarantee the delivery of each transaction generated by a user. Although there is a broadcast mechanism to propagate transactions across the P2P network of blockchain nodes, it is completely up to the node whether the transaction would be delivered or not. A node might decide to discard all of the transactions in its mempool(a collection of received transactions) due to the computing resource problem, or just due to the operator’s whim. Sometimes, a transaction might be held in the mempool indefinitely since there is less benefit from processing it(due to low transaction fee, for example). No one can say for sure about the lifetime of a yet unconfirmed transaction. For this reason, a transaction might be getting older and older sitting in the mempool and catch no chance to be included in a block. Say you are an operator of a validator node and have lots of too old transactions in your mempool. A transaction may be valid in the ancient context, but it may be invalid in the current context. For example, let’s think about this situation: Alice decided to transfer some of her 100 AMO coin to Bob. Alice sent a transaction at block height 1,000 depicting the recipient as Bob. But due to some reason(there may numerous possible reasons for this) the transaction was not processed, and remains in the mempool until the block height 100,000 (Wow!). Alice saw no hint of her transaction in the blocks and concluded that the transaction was lost somewhere in the timeline. But the transaction survived! And finally, a node decided to process the transaction after so long a time since the transaction was generated. Alice found it shocking for she didn’t expect the transaction to be processed! Is this situation fair? Some may say it’s perfectly ok for the sake of the protocol. But some may say it’s unnatural or unfair. So, it’s arguable. Someone needs to draw the line in the playground.In AMO blockchain, we address this problem with block-binding mechanism of a transaction. When a transaction is to be generated, the sender should inspect the blockchain and figure out the last block height of the chain. He/she writes this block height as the last seen height in the body of the transaction. It’s like the sender declares the birthdate of a transaction. The protocol says the blockchain nodes must respect this birthdate. If a transaction is older than the threshold agreed among the validators, then every node shall decide that it’s too old and discard the transaction immediately. In this manner, an unconfirmed transaction has finite lifetime.However, please note that the block-binding is rather loose, since the sender is free to choose the birthdate of a transaction. When the last seen height field(birthdate in the previous statement) is chosen to be 10,000, for example, validity of the transaction is not tightly bound to the blockchain state at the block height 10,000. If a blockchain node received it at block height 11,000, it won’t check the validity of the transaction against the blockchain state at height 10,000, but against that of height 11,000 or later. For this matter, it is possible that the sender chooses a transaction to be born in the future. He/she may choose the last seen height to be 12,000 even if current block height is 11,000. What will happen to this transaction then? Or what if the last seen height is chosen to be 11,001? There may be some natural delay in broadcasting process, and this transaction happens to arrive the mempool at the height of 11,100. The last seen height of 11,001 will be considered to be valid, but not the case for the last seen height 12,000. Choosing the last seen height to be in the future is a tricky game for the sender. So, it is recommended to choose the last seen height to be the current block height at the time of constructing the transaction.And one more thing to note is about replayed transactions. Generally speaking, there should be no multiple transactions with the same transaction hash in entire blockchain, including past and future ones. When a transaction is broadcasted among the nodes even if it was processed already, we call this a replayed transaction. If the chain permits this, a user’s asset can be spent multiple times although it is not the intention of the sender. Most straightforward and naive method to prevent this is to keep a list of all the transaction hashes processed in the entire chain. Every time a new transaction is arrived, a node would search in the list with the same transaction hash. Simple to describe, but the performance penalty is huge. But due to the block-binding previously described, sufficiently old transactions cannot be replayed, since they will be discarded on sight. So, we only need to keep the list of transaction hashes which are relatively fresh(younger than the agreed threshold). It’s still a simple rule with a small modification of aging of transactions. It is simpler to implement than the sequence mechanism used in Ethereum, for example. And this is a side effect of the block-binding mechanism.오래된 거래와 재전송되는 거래블록체인은 탈중앙화된 시스템으로서, 사용자들이 생성한 거래들이 제 때 처리되도록 보장하거나 책임져 주는 중앙화된 기관 같은 것이 없습니다. 물론 블록체인 노드들로 이루어진 P2P 네트워크에서 거래들을 여러 노드에 전파하는 메커니즘은 있지만, 그 거래들을 처리할 것인지 무시할 것인지는 전적으로 해당 노드의 판단에 달려 있습니다. 노드가 컴퓨팅 자원 문제 같은 피치 못할 이유 때문에, 혹은 그냥 관리자의 기분에 따라서 거래풀(mempool, 수집한 거래들의 대기열)의 모든 거래들을 날려 버릴 수도 있습니다. 또 어떤 거래들은 처리를 해도 그로부터 얻는 이득이 적어서(예를 들면 수수료가 적게 책정되어서)노드의 거래풀에서 무한정 대기할 수도 있습니다. 대기 중인 거래의 운명에 대해서는 아무도 확실하게 얘기할 수가 없습니다. 이런 일들이 일어나다 보면 어떤 거래는 거래풀에서 대기만 하면서 블록체 포함될 기회도 없이 시간만 보내게 될 수도 있습니다. 여러분이 validator node 중 하나의 운영자인데 거래풀에 너무 오래된 거래들이 잔뜩 쌓여 있다고 해 보겠습니다. 이 때, 특정 거래는 아주 오래전에는 합당한 상태였으나 현재 시점에 와서는 그렇지 않게 될 수도 있습니다. 예를 들어서 다음과 같은 상황을 생각해 보겠습니다: Alice는 Bob에게 100 AMO를 전송하기로 결정합니다. 그리고 1,000번째 블록까지 관찰한 시점에 Bob을 수신자로 하는 거래를 전송합니다. 하지만 어떤 이유에서인가(아주 다양한 이유가 있을 수 있음) 이 거래는 제 때 처리되지 못하고 100,000번째(!) 블록까지 체인이 진행될 때까지 거래풀에 그대로 남아 있습니다. Alice는 자신이 보낸 이 거래가 이 때까지 블록에 포함되지 못한 것을 보고 결국 이 거래는 어딘가에서 유실돼 버렸을 것이라고 판단해 버립니다. 하지만 반전은 이 거래가 살아 있었다는 것입니다. 그러다가 결국 어떤 노드가 자신의 거래풀에 들어 있던 이 거래를 그 오랜 세월 뒤에 드디어 처리하기로 결정합니다. Alice는 이것을 보고 놀랍니다. 이 거래가 처리될 것이라고 전혀 예상하지 못했기 때문입니다! 이 예시에 든 상황은 정말 괜찮은 걸까요? 누군가는 프로토콜에 이렇게 해도 된다고 돼 있으니 정당하다고 주장할 수도 있습니다. 그러나 누군가는 이건 자연스럽지도 못하고 공정하지도 않다고 주장할 수 있습니다. 논란의 여지가 생깁니다. 누군가는 운동장에 선을 그어줘야 합니다.AMO 블록체인에서는 이 문제를 거래 항목의 블록 결속(block-binding)을 이용하여 해소합니다. 송신자는 거래 항목을 생성할 때 먼저 블록체인 상태를 점검하여 체인의 마지막 블록 번호를 알아냅니다. 이 블록 번호를 거래 항목의 내용에 마지막 블록 번호(last seen height)로 적게 됩니다. 이는 송신자가 자기가 보낼 거래의 출생일을 지정하는 것과 유사합니다. AMO 블록체인 프로토콜을 따르는 노드들은 각 거래의 출생일에 따라 적절한 처리를 하도록 되어 있습니다. 만약 거래 항목의 나이가 validator들 사이에 합의된 특정 임계치보다 더 많다면 모든 노드들은 이 거래는 너무 오래 되었다고 판단해야 하고 거래 항목은 즉시 폐기됩니다. 이런 방식을 사용하면 아직 체인에 포함되지 않은 거래들은 정해진 기한 동안만 살아 있게 됩니다.하지만, 이런 블록 결속은 대체로 느슨한 방식입니다. 거래의 출생일을 어떻게 정하든 송신자의 마음이기 때문입니다. 마지막 블록 번호를(이전 문장에서의 출생일) 10,000으로 정했다면, 이 거래의 정합성까지 10,000번째 블록의 블록체인 상태정보에 맞춰지는 것은 아닙니다. 블록체인 노드가 블록 번호 11,000까지 진행한 상태에서 이 거래 항목을 수신했다면 거래의 정합성을 10,000번째 블록의 상태에 맞춰서 점검하는 게 아니고 11,000번째 블록이나 혹은 더 뒤의 상태에 맞춰서 점검하게 됩니다. 이런 면에서 보면, 송신자가 거래 항목의 출생일 미래로 정하는 것도 불가능하진 않습니다. 블록체인이 11,000번째 블록까지만 진행했는데도 송신자가 거래의 출생일을 12,000으로 정하면 이 거래는 어떻게 처리될까요? 또는 출생일을 11,001로 정하면 어떻게 될까요? 거래의 전파와 처리에는 자연적으로 어느 정도 시간이 걸리게 됩니다. 블록체인이 11,100번째 블록까지 진행한 시점에 이 거래가 블록체인 노드에 도착했다고 해 보겠습니다. 출생일이 11,001이면 정당한 것으로 취급될 것이지만 출생일이 12,000이면 그렇지 않습니다. 이런 딜레이까지 감안하면서 출생일을 미래로 조절해서 정하는 것은 까다로운 일입니다. 그러니 정상적인 상황에서는 거래의 출생일을 생성 시점의 블록체인의 마지막 블록 번호로 정하는 것이 권장됩니다.한가지 더 언급할 것은 재전송되는 거래에 관한 것입니다. 일반적으로 말해서, 전체 블록체인에서 같은 해쉬값을 갖는 거래가 여러개가 되면 안됩니다. 과거든 미래든 안됩니다. 어떤 거래가 이미 처리된 이후에 또 노드들 사이에 새 거래인 것처럼 전파되고 있다면 우리는 이것을 재전송되는 거래라고 부릅니다. 만약 체인이 이것을 허용하면 사용자의 자산은 소유주의 의사에 반하여 여러번 소비될 수 있습니다. 이런 것을 해결하는 가장 직관적이고 순진한 방법은 전체 체인에서 처리되었던 거래들의 해쉬를 모두 목록으로 저장해 놓고 비교하는 것입니다. 블록체인 노드들은 새 거래가 도착할 때마다 이 목록에서 같은 해쉬를 갖는 거래가 있었는지를 검사합니다. 규칙은 단순하지만 이를 실제 구현하면 성능 문제가 심각합니다. 하지만 앞서 설명한 블록 결속 기능으로 인해서 나이가 오래된 거래들은 발견 즉시 폐기되기 때문에 재전송될 수 없습니다. 따라서 이 경우 비교적 나이가 어린(미리 합의된 나이 이하인) 거래들에 대한 해쉬 목록만 유지하면 됩니다. 이전 규칙에 거래의 나이에 대한 약간의 수정만 있는 것이니 규칙은 여전히 꽤 단순합니다. 이러한 방식은 구현 상에서도 Ethereum 등에서 사용되는 일련번호 방식보다 단순합니다. 블록 결속 기능의 부대효과라고 볼 수 있습니다.Old Transactions and Replayed Transactions was originally published in AMO Labs Official on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 12. 10

A Story of Empty Blocks

One of the most important characteristics of modern blockchain technology is that it serves as a distributed ledger system, where a ledger is an ordered list of transactions. So it is an important role of a blockchain node, to collect a bunch of candidate transactions and weave them into a block and broadcast it. With this in mind, it is natural to think that every block in a blockchain contains a list of transactions, i.e. non-empty. But it is not. There are a lot of empty blocks in famous blockchain systems such as Bitcoin and Ethereum. You can find that people already asked why it is so [1][2].One major reason for empty blocks is that blockchain protocols such as Bitcoin or Ethereum does not prohibit empty blocks. Empty blocks are allowed by the protocols. They are not mysterious anomalies. They are perfectly normal, and other nodes in a blockchain network would be content if you may make an empty block and broadcast it to be included in a chain.What is an empty block? The term “empty” means there is no user-supplied transactions in the block. But empty blocks are not so empty. There are some data even in an empty block. It must have proper block headers at least. Even more, every block in Bitcoin contains one transaction(UTXO) to record a reward given to the miner. But empty blocks contain no transactions supplied from the users. So the miner who made an empty block processed no transactions and also made no contribution to the chain in viewpoint of recording transactions in the chain.Then what are they good for, and why does the protocol allow them? You may find many good answers in the internet, but we give the following three reasons:strengthen security of the chainrepresent the progress of timesupply newly generated coins to the chainA blockchain is an ever-growing chain of blocks. It weaves a new layer(new block) of facts stacked upon existing reality(existing blocks). It is harder to forge a certain fact if there are more layers of reality based on the fact. You may find enormous number of internet posts out there about this property. So let’s skip this explanation.A blockchain is an ever-changing database. So it is essential to constantly change as time passes. Every new block represents one unit time passed since the last block. We don’t worry when there are plenty of newly generated transactions to be included in a block. But what if there is no new transaction in the network for a certain amount of time period?(If there is no new transaction for a very long time, people may consider the chain is collapsed. We must worry about even bigger problems then.) Say the chain is configured to create a block in every second but there is no new transactions for 10 seconds, for example. If the chain protocol is irrelevant to exact time progress, the chain may lay dormant until there are any new transactions to process. But many blockchain systems introduce time-dependent properties, as is the case for AMO blockchain. A chain may introduce a time-locked stakes or expiration mechanism based on the progress of time, and it is measured in blocks in many cases, for it is tricky to handle clock-time in blockchain protocols. No blocks? Then no means to measure time progress.It might be a controversial argument that a public blockchain requires an incentive mechanism to encourage miners or validators. But, given that a blockchain system is a kind of closed economy system based on its own currency, it is inevitable to devise some kind of minting mechanism into it. Some of the early blockchain systems such as Bitcoin or Ethereum have very simple philosophy about minting. “You made a block? Then you get a reward from newly generated coins.” No matter what number of transactions in the block. It is a reward mechanism and a minting mechanism at the same time.Modern blockchain projects give their own reward or minting mechanism. We also provide our own: newly generated coins for every transaction processed. It is notable that reward is for a transaction, not for a block. Since the reward is for transactions, validators don’t get reward for an empty block. In this way the coupling between reward and minting get loosened. However, empty blocks are still required in some cases in AMO blockchain. As per a story about stake lock-up, when a validator stakes a coin, it is initially locked and cannot be withdrawn. It will unlock after a certain number blocks. Validators expect their stakes being unlocked after some period of time, not number of non-empty blocks. They don’t care if there are enough number of transactions to fill the blocks. They expect blocks being created with appropriate interval even if the blocks are empty. But since there is no direct incentive for an empty block, so nobody is willing to create an empty block. For this matter, AMO blockchain introduced a penalty mechanism for lazy validators. If they don’t work, then they will be punished. So, even if they are not willing to create an empty block, they are forced to do so.And that concludes a story about empty blocks in AMO blockchain.빈 블록 이야기현재의 블록체인 기술의 가장 큰 특징은 이들이 분산 원장을 제공한다는 것입니다. 여기에서 원장이란 순서대로 기록된 거래의 목록을 말합니다. 따라서, 블록체인 노드의 중요한 역할은 거래 항목들을 수집하고 이를 짜맞추어서 블록을 생성하고 전파하는 것이 됩니다. 이런 면에서 보면 블록체인의 모든 블록은 최소한 몇 개씩의 거래 항목을 포함하고 있다고 생각하기 쉽습니다. 그런데 그게 그렇지가 않습니다. 실제로 Bitcoin 과 Ethereum과 같은 유명 블록체인을 보면 많은 수의 블록들이 비어 있습니다. 이미 많은 사람들이 이걸 발견하고 어떻게 된 것인지 질문하고 있는 것을 찾아볼 수 있습니다 [1][2].거래 항목을 하나도 포함하지 않는 이런 빈 블록들이 생기는 것은 Bitcoin이나 Ethereum 같은 블록체인 프로토콜이 빈 블록을 막고 있지 않고 있기 때문입니다. 빈 블록들은 프로토콜에 의해 허용된 존재들입니다. 신기한 이상현상이 아니고 아주 정상적입니다. 여러분이 validator로서 빈 블록을 생성해서 체인에 포함시키기 위해 전파해도 다른 노드들은 이를 흔쾌히 허용합니다.그래서 빈 블록이란 무엇일까요? “비어 있다”는 의미는 사용자가 생성한 거래 항목이 없다는 뜻입니다. 그러나 빈 블록이라고 완전히 비어 있는 것은 아닙니다. 빈 블록에도 몇가지 정보들이 포함됩니다. 최소한 정상적인 블록 헤더가 있어야 합니다. 이에 더해서 Bitcoin의 경우 모든 블록은 마이너에게 주는 혜택을 기록하기 위한 거래(UTXO)를 반드시 하나 포함해야 합니다. 그러나 어쨌든 정상적인 사용자가 생성한 거래들은 포함하지 않습니다. 그러니 빈 블록을 만드는 마이너는 거래를 아무것도 처리한 것이 없게 되고, 거래의 기록이라는 관점에서 보면 체인에 기여한 게 아무것도 없습니다.그러면 이런 빈 블록은 도대체 무슨 소용이 있고, 블록체인 프로토콜들은 왜 이걸 허용하는 걸까요? 이에 대해서는 인터넷 상에서도 많은 좋은 답변들을 찾을 수 있지만, 이 글에서는 다음의 세가지를 이야기하고자 합니다:체인의 보안 강화시간의 흐름을 표현체인에 새로 생성된 코인을 공급블록체인이란 끊임없이 이어지는 블록들의 체인입니다. 이는 이미 존재하는 현실(기존 블록들)의 기반 위에 새로운 사실들(새 블록)을 만들어 쌓는 것으로 볼 수 있습니다. 어떤 사실에 기반하는 아주 많은 층의 또다른 사실들이 있다면 현실을 조작하는 것이 훨씬 어렵게 됩니다. 이러한 특성에 대한 글들은 많은 인터넷 글을 찾을 수 있으니 이 글에서는 이쯤으로 줄입니다.블록체인이란 또한 시간에 따라 끊임 없이 변화하는 데이터베이스입니다. 따라서 시간이 지나면 지속적으로 변하는 특성이 있습니다. 모든 블록은 마지막 블록 이후에 하나의 시간 단위 만큼의 변화를 의미합니다. 블록체인에 포함될 신규 거래들이 꽤 많이 있을 때는 별로 걱정할 것이 없습니다. 그런데 일정 기간 동안 신규 거래가 없다면 어떻게 될까요?(아주 긴 기간 동안 신규 거래가 없다면, 대중은 체인이 붕괴했다고 생각할 것이고 그런 상황이 오면 빈 블록보다 훨씬 심각한 문제들에 직면할 것입니다.) 예를 들어 체인이 1초에 하나의 블록을 생성하도록 설정되었는데 10초 동안 새로운 거래가 없다고 해 보겠습니다. 체인의 프로토콜이 엄밀한 시간의 진행과 상관이 없도록 만들어졌다면, 체인은 새로운 거래가 생길 때까지 그냥 잠든 상태로 대기하면 됩니다. 그러나 최근 많은 블록체인들이 시간 변화에 의존하는 특성들을 도입하고 있고, 그건 AMO 블록체인도 마찬가지입니다. 체인 시스템에 시간에 묶이는 스테이킹 기능이나 시간 진행에 따라 만료되는 특성이 도입될 수도 있는데, 이 때 시간의 진행은 많은 경우 블록의 수로 측정합니다. 왜냐하면 실제 시간을 블록체인에서 처리하는 것이 꽤 까다롭기 때문입니다. 그런데 신규 거래가 없어서 블록이 안 생긴다면? 시간의 진행을 측정할 방법도 없게 됩니다.공개형 블록체인에서 마이너나 validator를 독려하기 위한 인센티브 체계가 반드시 필요한가 아닌가는 논란의 여지가 있을 수도 있습니다. 그러나 블록체인 시스템이 자체 통화에 기반하는 온전한 경제 체계라는 점에서, 어떠한 방식이든 통화가 신규로 발행되는 메커니즘은 갖추어져야 합니다. Bitcoin이나 Ethereum 같은 초창기 블록체인 시스템에서는 이와 관련해 아주 단순한 접근을 합니다. “블록을 만들어냈는가? 그러면 신규 코인으로 보상을 한다.” 블록 안에 몇 개의 거래가 포함됐는지는 상관이 없습니다. 이는 보상 체계이면서 동시에 화폐 발행 체계이기도 합니다.현대의 블록체인 프로젝트들은 그들 자신만의 보상과 화폐 발행 체계를 갖추고 있습니다. AMO도 그렇습니다: 처리되는 거래마다 새로 발행된 코인을 보상합니다. 주목할 것은 보상이 블록 생성에 주어지는 것이 아니라 거래 처리에 주어진다는 점입니다. 보상이 거래 처리에 주어지다보니 빈 블록, 즉 거래가 포함되지 않은 블록을 만든 validator는 보상을 받지 못합니다. 이 방식은 전통적 블록체인들과는 다르게 보상과 화폐 발행 사이의 긴밀함이 감소하게 만듭니다. 그러나, AMO 블록체인에서도 경우에 따라 빈 블록이 필요해지게 됩니다. Stake 잠금 기능 소개라는 글에서 설명한 것과 같이, validator가 새로 스테이킹을 하면 일단 잠기게 되고 당장은 빼낼 수가 없습니다. 이후 정해진 수의 블록만큼 블록체인이 진행을 하면 잠금이 풀립니다. 이 규칙이 validator들에게 받아들여질 때는 일정 시간이 지나면 잠금이 풀린다고 이해될 개연성이 아주 큽니다. 비어 있지 않은 블록이 몇개냐 같은 것은 관심이 없을 것입니다. 또한 블록을 지속적으로 채울 만큼의 수의 거래가 있는지도 별 관심이 없을 것입니다. 빈 블록이든 아니든 정해진 간격으로 블록이 만들어지는 것만 기대할 것입니다. 하지만 빈 블록에 대한 직접적인 보상이 없다 보니 아무도 자발적으로 빈 블록을 만들지는 않을 것입니다. 이 문제에 대해서는 AMO 블록체인에 도입된 게으른 validator에 대한 페널티 체계가 도움이 됩니다. 일을 안 하면 벌칙을 받습니다. 따라서 자발적으로는 빈 블록을 만들고 싶지 않을지라도 그렇게 하도록 강제됩니다.이상으로 AMO 블록체인과 빈 블록의 관계에 대한 이야기였습니다.A Story of Empty Blocks was originally published in AMO Labs Official on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 11. 21

Penalty Mechanism in AMO Bl...

In the previous post “Incentive and Blockchain Economy”, we discussed about how validators get monetary benefit from participating in running AMO blockchain node network. The basic principle is to give a reward for a helpful action. But, we also need a penalty for a misbehavior.While a blockchain based on a PoW-like consensus mechanism is run by a massive crowd of peers, a blockchain based on a BFT-like consensus mechanism, such as AMO blockchain, is run by a clockwork protocol among the selected peers having a certain level of privileges (PoS or DPoS defines this level privileges). If someone in this selected peers behaves maliciously, or a non-negligible portion of this group just cast out their duty, the protocol cannot run smoothly. This is the thing different from PoW-like consensus mechanisms. For this reason, many blockchains based on BFT or similar consensus mechanism introduce a penalty mechanism. Sometimes, the penalty mechanism comes with a force-out or banish policy. However, the goal is one thing: to keep the group of operators as healthy as possible.In AMO blockchain, we have also a penalty mechanism for malicious or lazy validators. A validator is considered malicious when he/she supports two or more different facts. Technically speaking, this malicious behavior is detected as duplicate votes for different blocks in the same height and round(a round is a tendermint term). If we do nothing for this behavior, there may be a fork of the chain, and it is not desirable.A validator is considered lazy when he/she does not participate in the consensus protocol. Technically speaking, this lazy behavior is detected as absence of votes(a vote is a tendermint term) from this validator for a certain number of recent blocks. If we do nothing for this behavior, the health of the chain is compromised.A punishment itself is simple enough: to burn a certain amount of stakes. For delegators, it is to burn a certain amount delegated stakes. Interestingly, this punishment has something with the meaning of the word stake. Their coins are at stake if the validators do not act right, or if the delegators entrust their coins to unreliable validators. This kind of punishment is called slashing.In AMO blockchain, there are two blockchain parameters for the punishment: the slash ratio m for malicious behavior and the ratio l for lazyness. The numbers are rational numbers between 0 and 1. When it is decided to punish a validator for his/her malicious behavior, calculate the amount of stakes to burn: coins_to_burn = amount_of_effective_stake × m, and distribute this penalty among the validator and his/her delegators. As we use the weighted distribution when calculate individual incentive, we use the same weight for the penalty. So a validator shall pay the price as twice as a delegator.One thing that is not certain is how we should determine this slash ratios m and l. They will be determined at the last-minute protocol adjustment phase, based on the simulation results.AMO 블록체인의 벌칙(penalty) 메커니즘이전 포스트인 “Incentive and Blockchain Economy”에서 우리는 validator들이 AMO 블록체인의 운영에 참여함으로써 금전적인 이득을 얻는 방식에 대해서 설명했습니다. 기본적인 원칙은 도움이 되는 행위에 보상을 준다는 것인데, 사실 여기엔 비행(非行)에 대한 벌칙도 있어야 합니다.PoW와 같은 합의 메커니즘에 기반하는 블록체인은 다수의 군중에 의해서 운영되는데 반해서, AMO 블록체인과 같이 BFT 류의 합의 메커니즘에 기반하는 블록체인은 선택받은 정해진 수의 운영자들 사이의 정교한 프로토콜에 의해서 운영됩니다. (여기에서 운영자들을 선택하는 방식이 PoS, 혹은 DPoS 원리입니다.) 만약 이 선택된 운영자들 중 누군가가 악의적으로 행동하거나, 이 그룹에서 무시할 수 없는 정도의 비율의 운영자들이 의무를 저버리고 프로토콜에 참여하지 않는다면, 이 프로토콜은 제대로 동작할 수가 없습니다. 이것은 PoW 류의 합의 메커니즘과는 분명 다른 점입니다. 이 때문에 BFT나 유사한 합의 메커니즘에 기반하는 많은 블록체인에서 페널티 메커니즘을 도입하고 있습니다. 때로는 이 패널티 메커니즘에 제명이나 추방 정책이 포함되기도 합니다. 하지만 목적은 한가지입니다. 운영자들의 그룹을 가능하면 건전하게 유지하기 위한 것입니다.AMO 블록체인에서도 악의적이거나 게으른 validator들에 대한 페널티 메커니즘이 있습니다. 어떤 validator가 두 가지 이상의 서로 다른 사실을 지지할 때 이를 악의적이라고 간주합니다. 기술적인 표현으로는, 이 악의적인 행위는 같은 height와 round에 대해서 서로 다른 블록들에 대한 서명을 하는 행위로 나타납니다(여기에서 round는 tendermint 용어임). 여기에 대해서 아무것도 안하면 결국 체인에 분기(fork)가 발생하게 될 텐데 결코 바람직하지가 않습니다.어떤 validator가 합의 프로토콜에 제대로 참여하지 않을 때 이를 게으르다고 간주합니다. 기술적인 표현으로는, 이 게으름은 정해진 숫자의 최근 블록들에 이 validator의 서명(여기에서 서명은 tendermint 용어임) 이 존재하지 않는 것으로 나타납니다. 여기에 대해서 아무것도 안하면 결국 체인의 건전성을 해치게 됩니다.처벌 자체는 간단합니다. Stake 중 일부를 소각하는 것입니다. Validator가 아닌 delegator에 대해서는 위임된 stake 중 일부를 소각합니다. 재미 있는 것은 stake라는 단어의 의미입니다. 영어에서 “at stake”라는 표현은 위험에 처해 있다는 의미가 되는데, validator가 제대로 일을 안하거나 delegator가 믿음직하지 않은 validator에게 코인을 위임하게 되면 그들의 코인도 위험에 처해 있다(at stake)고 할 수가 있습니다. 이와 같이 stake의 일부를 소각해 버리는 처벌 방식을 흔히 slashing이라고 부릅니다.AMO 블록체인에는 이런 벌칙에 관련된 두가지의 인자가 있습니다: 악의적인 행위에 대한 slash 비율 m과 게으름에 대한 slash 비율 l이 있습니다. 이 숫자들은 0과 1 사이의 실수로 표현됩니다. 어떤 validator에게 악의적인 행위에 대한 처벌을 하기로 결정되었다면, 일단 소각해 버릴 스테이크의 양을 계산합니다: coins_to_burn = amount_of_effective_stake × m. 그리고 이 벌칙을 validator와 delegator들 사이에 분배합니다. 인센티브를 분배할 때 validator와 delegator에게 서로 다른 가중치를 두었던 것처럼 이 때에도 같은 방식으로 가중치를 둡니다. 따라서 validator는 delegator보다 두 배의 벌칙을 받게 됩니다.이 slash 비율 m과 l은 아직은 확정되지 않았으며, 적절한 시뮬레이션 결과를 기반으로 메인넷 출시 전 마지막 프로토콜 조정 단계에서 확정될 예정입니다.Penalty Mechanism in AMO Blockchain was originally published in AMO Labs Official on Medium, where people are continuing the conversation by highlighting and responding to this story.


19. 11. 07

Transaction History
Transaction History Market Market Transaction volume Address
BITHUMB To be provided later To be provided later To be provided later Short cut
coinone To be provided later To be provided later To be provided later Short cut
IDEX To be provided later To be provided later To be provided later Short cut
Security verification

There is security verification of the project
Why security verification is necessary?

Read more


* Written questions can not be edited.

* The questions will be answered directly by the token team.

Platform ERC20
Hard cap -
Audit -
Stage -
Location -
Market of major crypto coins *2020년 02월 20일 last update



11,611,397.28 KRW 3.69%



311,746.09 KRW 6.52%



328.81 KRW 6.23%

Bitcoin Cash


455,385.04 KRW 7.96%

Bitcoin SV


356,581.07 KRW 2.87%



1,210.03 KRW 1.57%



4,854.37 KRW 10.38%

Binance Coin


26,739.58 KRW 6.43%



54,759.09 KRW 0.54%



4,405.05 KRW 0.88%



68.98 KRW 7.04%



86.44 KRW 3.26%



94,291.33 KRW 7.48%



24.21 KRW 8.32%

Huobi Token


5,761.26 KRW 3.58%

Ethereum Classic


10,584.26 KRW 7.49%



16,947.76 KRW 7.34%



126,394.04 KRW 7.38%



5,154.34 KRW 4.10%



3,294.78 KRW 2.26%