Version 1 - Bifrost
Transcript of Version 1 - Bifrost
Version 1.0
Disclaimer The website and white paper prepared by Bifrost is for elaboration, description
and for informational purposes only, and is not an offer or a solicitation to buy or sell any securities
or to invest in any financial instruments. The registration on the Bifrost platform permits access
to the services provided by the platform as detailed herein. Registration is not intended to afford
the holder any rights in, or claims to, any of the assets of Bifrost or to in any way share in any
profits that the platform may achieve. Interested parties acknowledge agreeing to the Consent to
Use Electronic Records, Privacy Policy and Terms and Conditions. The white paper or content on
this webiste is subject to change at any time without notification. The white paper and website
describes the current plan and vision for the Bifrost platform. While we intend to attempt to
realize this vision, please recognize that it is dependent on quite a number of factors and subject
to quite a number of risks. We do not guarantee, represent or warrant any of the statements
in the white paper or website, because they are based on our current beliefs, expectations and
assumptions, about which there can be no assurance due to various anticipated and unanticipated
events that may occur. Please know that we plan to work hard in seeking to achieve the vision laid
out in the white paper and website, but that you cannot rely on any of it coming true. Blockchain,
cryptocurrencies and other aspects of our technology and these markets are in their infancy and
will be subject to many challenges, competition and a changing environment. We will try to update
our community as things grow and change, but Bifrost v0.9 undertake no obligation to do so.
Interested parties acknowledge that the Bifrost platform, as described herein, may never in
fact operate as intended. Parties also acknowledge that all services and scope of work proposed
in this white paper is subject to any licensing required. The information and graphical content
contained in the white paper and website should not be construed as a guarantee and is subject
to change at any time without prior notification. The information contained herein is intended for
familiarization, and should not be utilized or reproduced in any form in full or part. The white
paper has been prepared to the best of our knowledge and research, however it should not be relied
upon for any future actions including but not limited to financial or investment related decisions.
The company, founders, advisors or affiliates shall not be liable for any losses that arise in any
way due to the use of this document or the contents contained herein. The content, both written
and graphic may be historical or forward looking and therefore should not be relied upon. The
content is based on assumptions and therefore uses words such as โexpectsโ, โintendsโ, โwillโ, โcanโ,
โshouldโ or similar expressions. The assumptions drawn in this document are based on past trends
and data from third parties and other sources, which were believed to be reasonable at the time
they were made. However, they still involve unknown risks and uncertainties, as it is impossible
to predict anything outside of our immediate control including economic factors. Individuals and
investors are requested to carefully consider the risks, costs and benefits of acquiring the token
through this crowd sale as opposed to through a third-party exchange, once operational.
1
์ฐจ ๋ก
1 Introduction 4
1.1 Motivations and Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Approaches for Efficient Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 Bifrost Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2 Bifrost System 6
2.1 Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3 Node Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4 Execution Stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.5 Operation Stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3 Recipe for Dual-component DApps 13
3.1 Motivations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2 Recipe Language System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.3 Splitting and Transpilation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4 Linker & BFC System 17
4.1 Interworking via Linkers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.1.1 BFC Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.1.2 States . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.1.3 Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.2 DApp-wise and Container-wise Linkers . . . . . . . . . . . . . . . . . . . . . . . . 19
4.3 Relaying State of Cross Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.4 Linker Availability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.5 Relaying Cross-function Calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.6 Relaying Coins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.7 Linker Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
5 Container 22
5.1 Multiple Containers for Service Availability . . . . . . . . . . . . . . . . . . . . . 22
5.2 Container Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5.3 Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
6 Bifrost Ecosystem 24
6.1 Bifrost Ecosystem Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
6.2 Mechanisms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2
6.3 Bootstrapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
7 Conclusion 27
3
1 Introduction
1.1 Motivations and Problems
๋ธ๋ก์ฒด์ธ์ด๊ฐ์ ธ์ฌ๋ฏธ๋์ํ์ ์๋ํ์ฌ๋ง์์ฌ๋๋ค์ด๊ธ์ ์ ์ธํ๊ฐ์ํจ๊ปํฐ๊ธฐ๋๋ฅผํ๊ณ ์๋ค.
๋นํธ์ฝ์ธ์ ํ์ค์ํ๋ฅผ ํตํ ํํ ๊ธฐ๋ฅ์ ๊ฐ๋ฅ์ฑ์ ๋ณด์ฌ์ฃผ์๊ณ , ์ด๋๋ฆฌ์์ ์ค๋งํธ์ปจํธ๋ํธ๋ฅผ ์ด์ฉ
ํ์ฌ ๊ธฐ์ ์ ์ธ ์ง๋ณด์ ํจ๊ป ์๋ง์ ์ดํ๋ฆฌ์ผ์ด์ ๋ค์ด ์ค์ง์ ์ผ๋ก ๋์ํ ์ ์๋ ๊ธฐ๋ฐ์ ๋ง๋ค์๋ค.
์ค๋งํธ์ปจํธ๋ํธ์์ด๋ฅผํ์ฉํ Decentralized Application (์ดํ DApp)์๋ธ๋ก์ฒด์ธ์์์์ฌ๋ฌ๊ฐ์ง
์๋น์ค๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ค. ํนํ ๋ค์ํ DApp์ ๋ฑ์ฅ์ ๋ธ๋ก์ฒด์ธ ์ํ๊ณ๋ฅผ ํ์ฑํ์ํค๋ฉฐ DApp์
์ฐ์ํ์ธ์ผํฐ๋ธ์์คํ ๊ณผ๋ถ์ฐํ๋ฅผํตํํฌ๋ช ํ๊ณ ์์ ์ ์ธ์์คํ ์๊ตฌ์กฐ๋๊ฐ๊น์ด๋ฏธ๋์์ํํธ
์จ์ด ์ฐ์ ์ ์ฒด์ ํฐ ํ์ ๋ฐ๊พธ๋ ์ญํ ์ ํ ๊ฒ์ด๋ผ ์์๋๋ค.
ํ์ง๋ง, DApp์ ๋ฐ์ ์๋๊ฐ ๋์ค์ ๊ธฐ๋์ ํฌ๊ฒ ๋ฏธ์น์ง ๋ชปํ๊ณ ์์ผ๋ฉฐ, ๋ธ๋ก์ฒด์ธ ๊ธฐ์ ์์ฒด์
์ ํจ์ฑ์ ๋ํ ์๊ตฌ์ฌ๋ง์ ์ ๊ธฐ๋๊ธฐ๋ ํ๋ค. ํนํ, 1,000๊ฐ๊ฐ ๋๋ DApp์ ๋ณด์ ํ ์ด๋๋ฆฌ์ ๋ค
ํธ์ํฌ๊ฐ ์๋์ ๋ฌธ์ ๋ก ์ ํจํ ๊ธฐ์ ์ ์ง์์ ํ์ง ๋ชปํ๊ณ ์๋ค๋ ์ ์์ ๊ทธ ํ๊ณ๊ฐ ์ ์๋๊ธฐ๋
ํ๋ค. ๋ํ, ์์ Trilemma๋ก ๋ถ๋ฆฌ๋ Decentralization, Safety ๊ทธ๋ฆฌ๊ณ Scalability๋ฅผ ๋ชจ๋ ํ๋กํ ์ฝ
๋ ๋ฒจ์์ ํด๊ฒฐํ๋ ค๋ ๋ ธ๋ ฅ์ด DApp ๋ณด๋ค ํ๋กํ ์ฝ์ ์๊ฐ ๋ ๋ง์์ง๋ โProtocol Feverโ์ ํ์์
๊ฐ์ ธ์๋ค. DApp์๊ฐ๋ฐ์์ ์ฅ์์๊ฐ์ฅ๋จผ์ ๊ฒฐ์ ํด์ผํ ์ผ์ด๋ฐ๋ก DApp์๋น์ค๋ฅผ์ ๊ณตํ ๋ฉ์ธ๋ท
ํ๋กํ ์ฝ ์ ์ ์ด๋ผ๋ ์ฌ์ค๋ก ๋น์ถ์ด ๋ณผ ๋, ํ์ฌ์ Protocol Fever ํ์์ ์์ ์ ์ธ DApp ๊ฐ๋ฐ์
์ปค๋ค๋ ์ฅ์ ๊ฐ ๋ ์ ๋ฐ์ ์๋ค. ๋ค์ํ ํ๋กํ ์ฝ๊ณผ ๋ค์ํ DApp์ ์กด์ฌ๋ ์๋ก์ ์์์ ๋ํ
๋ฏธ์ค๋งค์นํ์์ ์ฌํ์ํจ๋ค.
์ด๋ฌํ ๋ธ๋ก์ฒด์ธ ๊ธฐ์ ์ ๊ตฌ์กฐ์ ๋ฌธ์ ์ ๋ค์๋ ๋ถ๊ตฌํ๊ณ ๊ตญ๊ฐ์ ์ฐ์ ์ ์ด์ํ์ฌ ๋ธ๋ก์ฒด์ธ์
ํ์ ์๊ฐ์ ธ์ค๊ณ ์์ผ๋ฉฐ,๋๋ถ๋ถํ๋ผ์ด๋น๋ธ๋ก์ฒด์ธ์์ด์ฉํ์ฌ์์ฉํ๋ฅผ์ด๋ฃจ๊ณ ์๋ค.ํนํ,์ ์๊ถ
๋ฐ ๋ฌผ๋ฅ ๋ถ์ผ์์ ํ๋ผ์ด๋น ๋ธ๋ก์ฒด์ธ์ ๊ณ ์ ์ ๋ฐ์ดํฐ ์ ๋ขฐ๋์ ์ฑ๋ฅ ๊ฐ์ ์ ํตํด ์๋ก์ด ๋ถ์ผ๋ฅผ
๊ฐ์ฒํ๊ณ ์๋ค. ์๋ฅผ ๋ค์ด, 2018๋ 10์ ์์ฉํ๋ ๋ธ๋ก์ฒด์ธ ๊ธฐ๋ฐ ์ํ ์ถ์ ๋คํธ์ํฌ โIBM Food
Trustโ๋ ์ํ ์์ฐ์ง๋ถํฐ ์ด์ก ๊ธฐ๋ก ๋ฑ ๋ชจ๋ ์ธ๋ถ ์ฌํญ์ ๊ณต์ ํด ๋ธ๋ก์ฒด์ธ์ ํ์ฉํ ์์คํ ์ด๋ค.
๋ธ๋ก์ฒด์ธ์ด ํ์ ์ ์ธ ์๋น์ค๋ก ์๋ฆฌ์ก๊ธฐ ์ํด์๋ ์ญ๋์ ์ธ DApp์ ์ํ๊ณ๊ฐ ๋ฌด์๋ณด๋ค๋ ํ์
ํ๋ค.๋ชจ๋ ์ฒจ๋จ๊ธฐ์ ์์ด์ฐฝ๊ธฐ์๋ง์ฐฌ๊ฐ์ง๋ก, DApp์ด์๋น์ค์ํํ๋ก์๋ฆฌ์ก๊ณ ์ํ๊ณ๋ฅผ๊ตฌ์ฑํ์ฌ
์ ์ํ์ ๊ตฌ์กฐ๊ฐ ํ์ฑ๋๊ธฐ ์ํด์๋ ๊ทน๋ณตํด์ผํ ๋ฌธ์ ๋ค์ด ์ฌ๋ฌ๊ฐ์ง ์๋ค.
์ฐ๋ฆฌ๋ ์ด ์ฅ์์, ์์์ ๊ธฐ์ ํ ๋ธ๋ก์ฒด์ธ์ ๊ธฐ์ ์ ํ๊ฒฝ์ ๋ฐํ์ผ๋ก DApp์ ๊ฐ๋ฐ ํ๊ฒฝ์์
์๊ธธ์์๋๋ฌธ์ ์ ๋ค์์ ์ํ๊ณ ๊ทธ์๋ํํด๊ฒฐ์ฑ ์์ ์ ์กฐ๊ฑด์์ ์ํ๋ฉฐ๊ฒฐ๋ก ์ ์ผ๋ก DApp๋ค์ด
์๋ํ ์ ์๋ Bifrost ์๋ฃจ์ ์ ์ ์ํ๋ค.
DApp์ ๊ฐ๋ฐํ๊ฒฝ์์ ๋์ ๋๋ ์ธ๊ฐ์ง ๋ฌธ์ ์ ๋ค์ด ๋ฐ๊ฒฌ๋๋ค.
์ฒซ์งธ, ํ๋ซํผ ๋ฆฌ์คํฌ์ด๋ค. ๋ฉ์ธ๋ท ํ๋กํ ์ฝ ์์์ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ค๋ ๊ด์ ์์ DApp์ ์ด๋
๋ฆฌ์์ด๋ ์ด์ค์ค ๊ฐ์ ๋ธ๋ก์ฒด์ธ ํ๋ ํผ์ ์ ํํด์ผ ํ๋ค. ์๋ง์ ๋ฉ์ธ๋ท ๋ธ๋ก์ฒด์ธ์ด ๊ฐ๋ฐ๋์์ผ๋ฉฐ
์ง๊ธ ์ด์๊ฐ์๋ ํ์ํ ๊ธฐ๋ฅ์ ๊ฐ์กฐํ๋ ์ฌ๋ฌ๊ฐ์ง ๋ฉ์ธ๋ท๋ค์ด ๋ฐํ๋๊ณ ์๋ค. ํ์ฌ ์กด์ฌํ๋ ๋ชจ๋
๋ฉ์ธ๋ท ํ๋กํ ์ฝ์ ๋ชจ๋ ์๋ก ๋ค๋ฅธ ์ฅ๋จ์ ์ ๋ณด์ ํ๊ณ ์์ง๋ง ๊ทธ ์ด๋ค ๊ฒ๋ DApp๋ค์๊ฒ ์๋ฒฝํ
๊ฐ๋ฐํ๊ฒฝ์ ์ ๊ณตํ๊ณ ์์ง์๋ค. ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ DApp์ ๊ฐ๋ฐ์๋ค์ ๋ฉ์ธ๋ท์ ์ ํํด์ผํ๊ณ
4
๊ฒฐ๊ตญ ๊ทธ ๋ฉ์ธ๋ท ํ๋กํ ์ฝ ์์คํ ์ ํ์ฅ์ฑ ๋ฐ ๊ฐ๋ฐ ๋ฐฉํฅ์ ๋ฐ๋ฅธ ์ ์ดํ ์ ์๋ ๋ฆฌ์คํฌ๋ฅผ ๊ฐ๊ฒ ๋๋ค.
๋์งธ, DApp์๋ฉ์ธ๋ท์๋ํ์๊ตฌ์ฌํญ์ด๋๋ฌด๋ค์ํ๋ค.๋ชฉ์ ์๋ถํฉํ๋์ํํ์๋น์ค๋ฅผ์ํ
์์คํ ์๊ตฌ๊ฐ DApp๋ง๋ค ๋ค๋ฅผ ์ ์๋ค. ํ์ง๋ง, ๋ค์ํ ์๊ตฌ๋ฅผ ๋ชจ๋ ์์ฉํ ์ ์๋ ํ๋์ ๋ฉ์ธ๋ท
ํ๋กํ ์ฝ์ ์กด์ฌํ์ง ์๋๋ค. ์๋ฅผ ๋ค์ด, ๋ธ๋ก์ฒด์ธ ์์คํ ์ ์ด์ฉํ๋ ํฌ๋ฆฝํ ๊ฒ์์, ์๋ง์ ํธ๋์ญ
์ ์ ์ฒ๋ฆฌ๊ฐ ๋น ๋ฅด๊ฒ ์ํ๋์ด์ผ ํ๋ฉฐ ์์ ํ ๋ฆฌ์๋ ์์คํ ์ด ํ์ํ๋ค. ์ฆ, ์๋์ ๋ํ ํ์ฅ์ฑ๊ณผ
์์ ์ฑ์ ๊ฐ๋ ๋ถ์ฐํ๋ ํ๊ฒฝ์ด ๋์์ ํ์ํ ๊ฒ์ด๋ค. ์ด๋ฌํ ์๊ตฌ์ฌํญ์ ํ๋์ ํผ๋ธ๋ฆญ ๋ธ๋ก์ฒด์ธ
์์ ๋ชจ๋ ๋ง์กฑ์ํค๋ ๊ฒ์ ๊ฑฐ์ ๋ถ๊ฐ๋ฅํ๋ค.
์ ์งธ, ํ๋ผ์ด๋น ๋ธ๋ก์ฒด์ธ์ ํตํ ๋ฌธ์ ํด๊ฒฐ์ ํ๊ณ๊ฐ ์๋ค. ํผ๋ธ๋ฆญ ๋ธ๋ก์ฒด์ธ์ ํ์ฅ์ฑ์ ๋ํ
๋ฌธ์ ๋ฅผ๋ถ๋ถ์ ์ผ๋ก๋๋์ ์ฒด์ ์ผ๋กํ๋ผ์ด๋น๋ธ๋ก์ฒด์ธ์ํตํดํด๊ฒฐํ๋ ค๋๋ง์์ฐ๊ตฌ๊ฐ์งํ์ค์ด๋ค.
ํ์ง๋ง ํ๋ผ์ด๋น ๋ธ๋ก์ฒด์ธ์ ๊ทธ ์์ ์ฑ ๊ฒ์ฆ์์คํ ์ด๋ ๋ฏฟ์ ๋งํ ์ฝ์ธ์ํ๊ณ๋ฅผ ๊ตฌ์ฑํ๋ ์ ์์
ํผ๋ธ๋ฆญ ๋ธ๋ก์ฒด์ธ์ ๋นํด ์ด๋ ค์์ ๊ฐ์ง๊ณ ์๋ค.
1.2 Approaches for Efficient Solutions
์ฐ๋ฆฌ๋ DApp์ ํ๊ฒฝ์์ ์๊ธฐ๋ ์ธ ๊ฐ์ง ๋ฌธ์ ์ ์ ๋ํ์ฌ ์ค์ง์ ์ธ ํด๊ฒฐ ์ํ ๋ค์์ ์ธ๊ฐ์ง ์ ๊ทผ
๋ฐฉ๋ฒ์ ๊ณ ๋ คํ๋ค.
โข ์ฒซ์งธ, ํ๋์ ๋ธ๋ก์ฒด์ธ ๋ฉ์ธ๋ท์ด ๋ชจ๋ ์ํฉ์ ์๋ฒฝํ ํด๋ต์ด ๋ ์ ์๋ค. ์๋ฒฝํ ๋ธ๋ก์ฒด์ธ์ด
์กด์ฌํ์ง ์๊ณ ์๋ก์ ์ฅ๋จ์ ์ด ๋ค๋ฅธ ์ํฉ์์ ํ๋์ ๋ฉ์ธ๋ท ๋ธ๋ก์ฒด์ธ์ด ํ๋ซํผ์ผ๋ก ๊ณ ์ฐฉํ
๋์ด ์ฌ์ฉํ๋ ๊ฒ์ ๋นํจ์จ์ ์ด๊ณ ์ํํ๋ค.
โข ๋์งธ, ํ๋ผ์ด๋น ๋ธ๋ก์ฒด์ธ์ด ๋ชจ๋ ๊ฒ์ ํด๊ฒฐํ ์๋ ์๋ค. ํ๋ผ์ด๋น ๋ธ๋ก์ฒด์ธ์ ๋ง์ ์ฅ์ ์
๊ฐ์ง๊ณ ์์ง๋ง ํผ๋ธ๋ฆญ ๋ธ๋ก์ฒด์ธ์ ๋ณธ์ง์ ์ธ ์ฅ์ ์ ๋์ฒดํ ์๋ ์๋ค.
โข ์ ์งธ, OS๋ Abstraction Layer์ ์ถ๊ฐ๋ฅผ ํตํ ํด๊ฒฐ์ ์ ์ฒด์ ์ธ ์ค๋ฒํค๋๋ง ๋๋ฆด๋ฟ์ด๋ค. ๋ฉ์ธ
๋ท์ ํ์ฅ์ ํตํ ๊ธฐ๋ฅ์ ๊ฐ์ ์ ์ ์ฒด ์์คํ ์ ๊ณผ๋ถํ์ ๋ํ ์์ธ์ผ ์ ์์ผ๋ฉฐ, ํ์ฅ์ฑ์
๋ํ ์ ํ์ ๊ฐ์ ธ์ฌ ์ ์๋ค.
1.3 Bifrost Method
์ฐ๋ฆฌ๋ Bifrost๋ฅผ ํตํด์ ํผ๋ธ๋ฆญ ๋ธ๋ก์ฒด์ธ์ ์์ ์ฑ๊ณผ ํ๋ผ์ด๋น ๋ธ๋ก์ฒด์ธ์ ์ฑ๋ฅ์ ๊ฐ์ง DApp
ํ๋ซํผ์ ๊ฐ๋ฅํ๊ฒํ๊ณ ์ ํ๋ค. ์ฐ๋ฆฌ๋ ๋น๋ฉดํ ๋ฌธ์ ๋ค์ ํด๊ฒฐํ๊ณ ๋ธ๋ก์ฒด์ธ์ ์ค์ DApp ์๋น์ค์
์ง์คํ๊ธฐ์ํด์,๊ธฐ์กด์๋ธ๋ก์ฒด์ธ์์คํ ๋ค์ Building Block์ผ๋ก์ฌ์ฉํ์ฌ๊ฐ๋ณ์์คํ ๋ค์์ฅ์ ์
์ทจํ๋ฉด์ ๋ ๋ฆฝ์ ์ผ๋ก ์๋น์ค๋ฅผ ๊ตฌ์ฑํ ์ ์๋ ์๋ก์ด ํ๋ซํผ์ด ํ์ํ๋ค๋ ๊ฒฐ๋ก ์ ์ด๋ฅด๊ฒ ๋์๋ค.
์ฆ,๊ฒ์ฆ์ ๋ขฐ๋๋ฅผ๋ฐํ์ผ๋กํ๋ํผ๋ธ๋ฆญ๋ธ๋ก์ฒด์ธ๊ณผ๋ชฉ์ ์๋ง๊ฒํ๋๋ํ๋ผ์ด๋น๋ธ๋ก์ฒด์ธ์์กฐํฉํ
์ฌํ๋์์คํํ๊ฒฝ์ผ๋ก๊ตฌ์ฑํ๊ณ ๊ทธ์์๊ฐ๊ฐ์์ฅ์ ์ํ์ฉํ ์์๋ DAppํ๋ซํผ์๊ฐ๋ฐํ๋ค๋ฉด
์์์ ์ ๊ธฐํ ๋ชจ๋ ๋ฌธ์ ๋ค๊ณผ ๊ทธ๊ฒ์ ํด๊ฒฐ์ฑ ์ ๋ํ ๋ฐฉํฅ์ ๋ถํฉํ ์ ์๋ค.
์ฐ๋ฆฌ๋ DApp์ ์ํ ์๋ก์ด ํ๋ซํผ, Bifrost๋ฅผ ์๊ฐํ๋ค. Bifrost๋ ์ค์ ๋ธ๋ก์ฒด์ธ์ ์๋น
์ค๊ฐ ๋์ํ๋ DApp์ ์ด์ ์ ๋ง์ถ๋ค. Bifrost์ ๊ธฐ๋ฐ ํ๋ซํผ ๋ธ๋ก์ฒด์ธ ์์คํ ์ ๊ฒ์ฆ๋ ๊ธฐ์กด
5
์ ๋ธ๋ก์ฒด์ธ ์์คํ ์ ํผ๋ธ๋ฆญ ๋๋ ํ๋ผ์ด๋น ๋ธ๋ก์ฒด์ธ ํํธ๋ก ๋ฐ๋ก ํ์ฉํ๊ณ , ์กฐํฉ๋ ํ๊ฒฝ ์์์
DApp์ด ๋์ํ ์ ์๋๋ก DApp์ ์ฌ๊ตฌ์ฑ(restructure)ํ์ฌ ์คํ์ํจ๋ค. ์ด๋ฅผ ์ํ์ฌ Bifrost๋
DApp์ deployment ๋จ๊ณ์์ operation ๋จ๊ณ๊น์ง์ ์ ๊ณผ์ ์ ์ง์ํ๋ค. Deployment ๋จ๊ณ์์๋
DApp๊ฐ๋ฐ์์์๋๋ฅผ๋ฐ์ํ์ฌ DApp์์ฝ๋๋ฅผํผ๋ธ๋ฆญํํธ์ํ๋ผ์ด๋นํํธ๋ก๋ถ๋ฆฌํ๋ฉฐ์๋์ผ๋ก
์ฌ๊ตฌ์ฑํ๋ค.์ฌ๊ตฌ์ฑ๊ณผ์ ์์์์ฑ๋์ปดํฌ๋ํธ๋ค์ด๊ฐ๊ฐ์์์น์์ค์น๋๊ณ ๋๋ฉด, DApp์ operation
๋จ๊ณ์์๋ ์ปดํฌ๋ํธ๋ค์ด ์์ ํ๊ฒ ์ฐ๋ํ์ฌ ์คํ๋ ์ ์๋๋ก Bifrost๊ฐ ์ฐ๊ฒฐ์ (Linker) ์ญํ ์
ํ๋ค.
Bifrost๋ ์์ธกํ๊ธฐ ํ๋ ๋ธ๋ก์ฒด์ธ์ ๋ฏธ๋์ ๋๋นํ ์ ์๋ ์ ์ฐ์ฑ์ ๊ฐ์ง๊ณ ์๋ค. Bifrost
์์๋ ๋ค์๊ณผ ๊ฐ์ ํน์ง๋ค์ ๊ฐ์ง๊ณ ์๋ค.
1. Blockchain as a Building Block: ํผ๋ธ๋ฆญ ๋ธ๋ก์ฒด์ธ๊ณผ ํ๋ผ์ด๋น ๋ธ๋ก์ฒด์ธ์ ํจ๊ป ๋ฌถ์ด
ํ๋์ ๋ณ๋ ฌํ๊ฒฝ์ ๊ตฌ์ฑํ๋ค. ์ด๋ ํ๋ผ์ด๋น ๋ธ๋ก์ฒด์ธ์ Federation ํํ๋ก ์ฌ๋ฌ ๊ฐ์ ์ฒด์ธ์
ํจ๊ป ๊ตฌ์ฑํ ์ ์๋ค.
2. Container ๋จ๊ณ์์์ ์์ ๋: ํ๋์ ํ๋ผ์ด๋น ๋ธ๋ก์ฒด์ธ์ ๋ ๋ฆฝ๋ Container ํํ๋ก ๊ตฌ
์ฑํ๊ณ , ๊ฐ Container๋ง๋ค ๋ค๋ฅธ ์ค์ ์ด ๊ฐ๋ฅํ๋ค. ์ฆ, Container๋ ๋์ ์ผ๋ก ์์ฑ๊ณผ ์ญ์ ๊ฐ
๊ฐ๋ฅํ๊ณ ๋ด๋ถ์ ์ผ๋ก ์ฑ๋ฅํ๋์ด๋ ํธ๋์ญ์ ์ ์ต๋ช ์ฑ์ ๋ณด์ฅํ๋ ๊ธฐ์ ๋ค์ ์ ์ฉํ ์ ์๋ค.
Container ๋ ๋ฒจ์์์ ๊ด๋ฆฌ๋ ๊ธฐ์กด์ ์์คํ ์์ ๊ณ ๋ คํ์ง ๋ชปํ ์ ๊ทผ ๋ฐฉ๋ฒ์ด ๊ฐ๋ฅํ๋ค. ์๋ฅผ
๋ค์ด, ๊ธฐ๋ก์ ๋จ๊ธฐ์ง ๋ง์์ผ ํ๋ ์๋น์ค๋ ๋ ๋ฆฝ๋ Container๋ก ์ด์ ํ ํ๊ธฐํ ์ ์๋ค.
3. Dual-component DApp ์ฌ๊ตฌ์ฑ: Bifrost์์๊ฐ๋ฐ๋ DApp์๊ธฐ๋ฐ๋ธ๋ก์ฒด์ธ์๋ง๋์ค๋ง
ํธ์ปจํธ๋ ํธ์์ปดํฌ๋ํธ๋ค๋ก์ฌ๊ตฌ์ฑ๋์ด์ํผ๋ธ๋ฆญ๊ณผํ๋ผ์ด๋น๋ธ๋ก์ฒด์ธ์์์๋์์๋์ํ
๋ค.๋ฐ๋ผ์,ํ๋ผ์ด๋น๋ธ๋ก์ฒด์ธ์๋์์ฑ๋ฅ์๊ตฌํํ๋ฉด์๋ํผ๋ธ๋ฆญ๋ธ๋ก์ฒด์ธ์ํตํด์์ ํ๊ฒ
๊ฒ์ฆ์๋ฐ์์์๋ค. Dual-component DApp์์ฌ๊ตฌ์ฑ๊ธฐ์ ์์ด๊ธฐ์๊ธฐ์กด์ DApp์๋์์ผ
๋ก ํ์ง๋ง Bifrost์ ์ ์ฐ์ฑ์ ๋ชจ๋ ์ง์ํ๊ธฐ ์ํ ์๋ก์ด ์ธ์ด๋ฅผ ํตํด์ ํ์ฅ๋ ์์ ์ด๋ค.
Bifrost์ ์ง์ ํ ๊ฐ๋ฅ์ฑ์ ์๋ก ๋ค๋ฅธ ๊ธฐ์กด์ ๋ธ๋ก์ฒด์ธ ์์คํ ์ ์ฅ์ ์ ์ด๋ฆฌ๋ฉฐ ์กฐํฉํ ์
์๋ค๋ ์ ์ด๋ฉฐ, DApp์ด ๊ถ๊ทน์ ์ผ๋ก ํ๋ซํผ ๋ฆฌ์คํฌ์์ ์์ ๋กญ๊ฒ ํ ์ ์๋ค๋ ๋ฐ์ ์๋ค.
2 Bifrost System
2.1 Design
DAppโs dilemma or trilemma. ์๋ก๋ค๋ฅธํน์์๊ฐ์ง๋ธ๋ก์ฒด์ธ์์คํ ์ด์์ฅ์์ ๋ณด์ด๋ฉด์,
DApp์๋ชฉ์ ์๋ฐ๋ผ์์์ ์๊ฒ๊ฐ์ฅ์ ํฉํ์ฅ์ ์๊ฐ์ง๊ณ ์๋๋ธ๋ก์ฒด์ธ์์คํ ์์ ํํ ์์๊ฒ
๋์๋ค.ํ์ง๋ง DApp์๋น์ค๊ฐํ๋์๋ธ๋ก์ฒด์ธ์์คํ ์์ข ์๋๋ฉด์ํด๋น๋ธ๋ก์ฒด์ธ์์คํ ์ด๊ฐ์ง
๋ ๋จ์ ๋ํ ๊ฐ๋ดํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ์ ํ์ด DApp ๊ฐ๋ฐ์๋ ์๋น์ค ์ ๊ณต์ ์ ์ฅ์์๋ ์ฝ์ง
์์ ์ํฉ์ด๋ค. ์๋ฅผ๋ค์ด, digital contents๋ฅผ ํ๋งคํ๋ DApp์๊ฒ๋ ์ค์ ๋น์ฉ์ด ์ค๊ณ ๊ฐ๋ ์ ๊ธ์ด๋
๊ฑฐ๋๊ณต์ง๋ฑ์๊ธฐ๋ฅ์ํผ๋ธ๋ฆญ๋ธ๋ก์ฒด์ธ์ด์ ํฉํ์ง๋ง,๋ด๋ถ์ ์ธ๊ฒฝ๋งค๋ํ์๊ธฐ๋ฅ๋ฑ์ํ๋ผ์ด๋น๋ธ
6
๋ก์ฒด์ธ์ด๋์ ํฉํ๋ค. DApp์ ๊ณต์๋์ด๋ฌํ dilemma (๋๋ trilemma)์์์์๋น์ค์์ต์ข ์ ์ธ
์์ ์ฑ๊ณผ ์ฑ๋ฅ์ ๊ฒฐ์ ํ๋ ๋ธ๋ก์ฒด์ธ์ ํ๋ฒ์ ์ ํํ๊ฒ ์ ํํด์ผ ํ๋ ์ด๋ ค์์ ์ง๋ฉดํด ์๋ค.
Donโt reinvent the wheel. ๊ธฐ์กด์๋ธ๋ก์ฒด์ธ์ํ๊ณ์ ์ํด๊ฒฐํ๊ธฐ์ํ์ฌ์ด๋ฏธ๋ง์์๋ก์ด๋ธ๋ก
์ฒด์ธ ์์คํ ๋ค์ด ํ๋ฐํ๊ฒ ์ ์๋๊ณ ๊ฐ๋ฐ๋๊ณ ์์ง๋ง, ๋๋ถ๋ถ ๋ถ๋ก์ฒด์ธ์ ์์คํ ์ ๊ณต์ (provider)
์ธก๋ฉด์์ ์ ํ ์๋ก์ด ๋ธ๋ก์ฒด์ธ ์์คํ ๊ณผ ํ๊ฒฝ์ ๊ตฌ์ถํจ์ผ๋ก์จ ๋ชจ๋ ๋ฌธ์ ๋ฅผ ํ๊บผ๋ฒ์ ํด๊ฒฐํ๋ ค๋
์ ๊ทผ์ ํ๊ณ ์๋ค. ํ์ง๋ง ํ๋์ ๋ต์ด DApp ๋ง๋ค ๋ค๋ฅธ ์ธ๋ถ์ ์ธ ์๊ตฌ์ฌํญ๋ค์ ๋ชจ๋ ์ถฉ์กฑ์ํค๊ธฐ
์ด๋ ต๊ณ , ๊ทผ๋ณธ์ ์ด๊ณ ๊ธฐ์ ์ ์ธ trade off๋ค ๋๋ฌธ์ ํ๋์ ํด๊ฒฐ์ฑ ์ด ๊ฒฐ๊ตญ ๋๋ค๋ฅธ ๋ฌธ์ ์ ์ ๋ถ๋ฌ์ค๋
์ ์ํ์ด ๋ฐ๋ณต๋๊ณ ์๋ค.
Our approach: cherry-picking in a good way. ์ฐ๋ฆฌ๋ ๊ธฐ์กด์ ๋ธ๋ก์ฒด์ธ ์์คํ ์ผ๋ก ๊ตฌ์ฑ๋
ํผ๋ธ๋ฆญ๊ณผํ๋ผ์ด๋น๋ธ๋ก์ฒด์ธ์ด์กฐํฉ๋์ด์ค๋ธ๋ก์ฒด์ธ(dual blockchain)ํ๊ฒฝ์๋ง๋ จํ๊ณ , DApp์ด๋
๋ธ๋ก์ฒด์ธ์์คํ ์์ฅ์ ์์ด์ฉํ๋ฉฐ์คํ๋ ์์๋๋กํ๋ํ๋ซํผ์์ ๊ณตํ๋ค.์ฐ๋ฆฌ๋ Bifrost๋ผ๋
์๋ก์ด DApp ํ๋ซํผ์ ํตํ์ฌ DApp์ ๋ํ ์ค์ฉ์ ์ธ ํด๊ฒฐ์ฑ ์ ์ ๊ณตํ๊ณ ์ ํ๋ค. DApp ์๋น์ค์
๊ฐ๋ฐ์์ ์ ๊ณต์ ์ ์ฅ์์๋ 1) ๊ธฐ๋ฐ ๋ธ๋ก์ฒด์ธ ์์คํ ์ ์ข ์๋๋ ๊ณผ์ ์์ ์ค๋ ๋ถํ์ค์ฑ๊ณผ 2)
ํ๋์ DApp์์ ํผ๋ธ๋ฆญ๊ณผ ํ๋ผ์ด๋น ์ด๋ผ๋ ๋ ๊ฐ์ง ๋ธ๋ก์ฒด์ธ ์์คํ ์ ํน์ง์ ๋์์ ํ์๋ก
ํ๋ ์ญ์ค์ ์๊ตฌ์กฐ๊ฑด๋ค์ ํด๊ฒฐํด์ผ ํ๋ค. ๊ฒฐ๊ตญ DApp์์ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ์ด๋ ํ ๋ธ๋ก์ฒด์ธ์
์ฌ์ฉํ๋๋ ๋ณด๋ค๋ ํ๋ซํผ์์ DApp์ ์๊ตฌ์ฌํญ๋ค์ ์ ํด๊ฒฐํด ์ค ์ ์๋๊ฐ ์๋ค. ๋ฐ๋ผ์ ์ฐ๋ฆฌ๋
์๋ก์ด mainnet ๋ธ๋ก์ฒด์ธ ์์คํ ์ ๋ง๋ค๊ธฐ ๋ณด๋ค๋ ์ด๋ป๊ฒ DApp์ด ๊ธฐ์กด์ ๋ธ๋ก์ฒด์ธ ์์คํ ์์
ํ์ํ ๊ธฐ๋ฅ๋ค์ ์ฌ์ฉํ ์ ์๊ฒ ํ ์ง์ ์ง์คํ๋ค.
Bifrost๋ DApp์ ๊ฐ๋ฐ์์ ์คํ๊น์ง์ ์ ๊ณผ์ ์ ์ง์ํ๋ ํ๋ซํผ์ด๋ค. Bifrost๋ DApp
์๋น์ค๊ฐ๋ฐ์๊ฐ์๋ก๋ค๋ฅธ์ฅ์ ์๊ฐ์ง๋ธ๋ก์ฒด์ธ์์คํ ์ด์กฐํฉ๋ํ๊ฒฝ์๊ฐ์ ํ์ฌ์๋น์ค๋ฅผ๊ฐ๋ฐํ
๊ณ ,์ค์น๋จ๊ณ์์์๋์ผ๋ก DApp smart contract๋ฅผ์ฌ๊ตฌ์ฑํ์ฌ์ด์ํ ์์๋๋กํ๋ค.์ผ๋ฐ์ ์ผ๋ก
ํ๋์ DApp์๋น์ค๋ํต์ฌ์ด๋๋ smart contract์ฝ๋๋ค์๊ธฐ๋ฐ์ผ๋ก์ถ๊ฐ์ ์ผ๋ก web์ด๋ storage
์ ๊ฐ์ ์ธ๋ถ ์ธํฐํ์ด์ค๋ฅผ ํตํ์ฌ ์ฌ์ฉ์์๊ฒ ์๋น์ค ๋๋ ํํ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. Smart contract๋
๋ธ๋ก์ฒด์ธ ์์คํ ๋ง๋ค ์ฐจ์ด๊ฐ ์์ง๋ง, ๊ฐ๋ฐ๊ณผ์ ์์๋ ๋ค์ํ ๊ธฐ๋ฅ๋ค์ ๋ชจ๋ํํ ํจ์๋ค๊ณผ ์ ๋ณด๋ค
์ด ์ ์ฅ๋์ด ์๋ ๋ณ์ ๋๋ state์ ์กฐํฉ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ๋ฐ๋ผ์ DApp์ ๊ฐ ๊ธฐ๋ฅ์ smart
contract์ ํจ์ ๋จ์๋ก ๊ตฌ๋ถํ์ฌ ์๊ฐํ ์ ์๋ค. DApp ๊ฐ๋ฐ์๋ ๊ธฐ์กด๊ณผ ๋์ผํ ๊ณผ์ ์ ํตํด์
DApp ์๋น์ค๋ฅผ ๊ฐ๋ฐํ๋ฉด์ ๊ฐ ๊ธฐ๋ฅ๋ณ๋ก ๋์์ด ๋๋ ๋ธ๋ก์ฒด์ธ ์์คํ ์ ์ง์ ํ๋ฉฐ ๋ช ์ํ๋ค. ์ดํ
์ค์น ๋จ๊ณ์์ Bifrost๋ DApp smart contract์ ๊ฐ ๊ธฐ๋ฅ์ ๊ธฐ๋ฅ๋ณ๋ก ์ ํฉํ ๋ธ๋ก์ฒด์ธ ์์คํ ์
๋งคํ(mapping)ํ๊ณ , smart contract๋ฅผ๋ถ๋ฆฌํ์ฌ์ ํ๋๋ธ๋ก์ฒด์ธ์์คํ ์๋ง๋๋ก์กฐ์ ํ๋์ฌ๊ตฌ์ฑ
๊ณผ์ ์ ๊ฑฐ์น๋ค. ํ์ง๋ง, ์ด๋ฌํ ๊ณผ์ ์์๋ ์ ๊ตํ smart contract์ ๋ํ ๋ถ์๊ณผ ๋ถ๋ฆฌ๋ ๋ถ๋ถ๋ค์ด
seamlessํ๊ฒ ์ฐ๋๋๊ธฐ ์ํ ํ๋ซํผ์ ์ง์์ด ํ์ํ๋ค. ๋ฐ๋ผ์ Bifrost๋ DApp์ ์ฌ๊ตฌ์ฑ๊ณผ์ ์
์ ํํธ๊ฐ ์ฐ๋์ ํ์ํ ์ ๋ณด๋ฅผ ์๋์ ์์ฑํ๋ค. ์ค์ ์ด์๋จ๊ณ์์ Bifrost๋ ๋ถ๋ฆฌ๋ DApp์
์กฐ๊ฐ๋ค์ด ๊ฐ๋ฐ์์ ์๋๋๋ก ํ๋์ DApp์ผ๋ก ์คํ๋ ์ ์๋๋ก ํ๋ ๋ค๋ฆฌ์ ์ญํ ๊ณผ ์ธ๋ถ ์ฐ๋์
์ํ DApp ํ๋ซํผ์ ์ญํ ์ ์ํํ๋ค.
7
Development & Deployment Phases Operation Phases
Web Oracles
I/O module
Linker Linker
Ext.StorageSecured
(TPM)
Container 1
Public Blockchain
Efficient (or confidential)
Tx
Publicly loggedTx
Design a DApp
Select a BifrostContainer to deploy
DApp (in Recipe)
Private component
Public component
Linker description
Private Blockchain
Per-private blockchainsetting
(e.g., performance tuning)
BFCToken
System
Split &Transpile
Container 2
๊ทธ๋ฆผ 1: Bifrost process
Design goals. Bifrost์ ์ค๊ณ ๋ชฉํ๋ ๋ค์๊ณผ ๊ฐ๋ค.
โข DApp์ด ํ๋์ ๋ธ๋ก์ฒด์ธ ์์คํ ์ ์ข ์๋์ง ์๋๋ก ํ๋ค.
โข DApp์ ์ํ์ฌ ๊ธฐ์กด์ ๋ธ๋ก์ฒด์ธ ์์คํ ์ ์กฐํฉํ ์ด์ค ๋ธ๋ก์ฒด์ธ(dual blockchain)์ ํ๊ฒฝ์
์ ๊ณตํ๋ค.
โข DApp์ด ์ด์ค ๋ธ๋ก์ฒด์ธ์ ๊ฑธ์ณ์ ๋์ํ์ฌ ๊ฐ ๋ธ๋ก์ฒด์ธ์ ์ฅ์ ์ ํ์ฉํ ์ ์๋๋ก ํ๋ค.
โข ์ด์ค๋ธ๋ก์ฒด์ธ์๊ฑธ์ณ์๋์ํ๋ DApp์์ถ๊ฐ์ ์ธ์ฑ๋ฅ์ ํ๋ฅผ์ต์ํํ๋ค. (ํ๋์ DApp์ด
๋ค๋ฅธ๋ธ๋ก์ฒด์ธ์์คํ ์๊ฑธ์ณ์๋์ํ์ง๋ง,๊ฐ๋ถ๋ถ์ํ์๋ธ๋ก์ฒด์ธ์ด์ ๊ณตํ๋ native smart
contract๋ฅผ ์ํ runtime์ ์ฑ๋ฅ์ ๋ณด์ฅํ๋ค.)
โข ๊ธฐ์กด์ smart contract ์ธ์ด๋ฅผ ํ์ฅํ ์๋ก์ด ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ ์ํ์ฌ ์ด์ค ๋ธ๋ก์ฒด์ธ์
์ํ ํ๋ก๊ทธ๋จ ๋ชจ๋ธ์ ์ ๊ณตํ๋ค.
2.2 Overview
Bifrost๋ ์ด์ค ๋ธ๋ก์ฒด์ธ์ ์ฅ์ ์ ์ด๋ฆฐ ํจ๊ณผ์ ์ธ DApp ํ๋ซํผ์ ์ ๊ณตํ๋ค. ํนํ ยง2.1์ ๋ชฉํ๋ฅผ
๋ฌ์ฑํ๊ธฐ์ํด์, Bifrost๋ DApp์์์ ์ฃผ๊ธฐ(lifecycle)์์๋์ํ๋ค.์ฆ, DApp์๊ฐ๋ฐ๊ณผ์ ์์
์ค์น ๋ฐ ์ด์ ๊ณผ์ ์ ๊ด๋ฆฌํ๋ค. ์ ํต์ ์ผ๋ก๋ ์ด๊ธฐ์ข ์ ๋ณตํฉ ์์คํ ์ ํตํฉํ๋ ๊ณผ์ ์์๋ ๋ณ๋์
์ถ์ํ๊ณ์ธต์์ถ๊ฐํ์ฌํ๋ถ์์คํ ์๋ณต์ก๋๋ฅผ๋ฎ์ถ๋๋ฐฉ๋ฒ์์ ์ฉํด์๋ค.ํ์ง๋ง์ด๋ฌํ๊ฒฝ์ฐ์๋
๊ฐ์ ์ ์ธ ์คํ๊ณผ์ ์์์ ์ฑ๋ฅ์ ํ์ ํจ๊ป ํ๋ถ ์์คํ ์ ๊ธฐ๋ฅ์ ์ ํ์ ์ผ๋ก ์ฌ์ฉํด์ผํ๋ ๋ฌธ์
์ ์ ๊ฐ์ง๊ณ ์๋ค. Bifrost๋ ๋จ์ํ ์์คํ ์ ํ์ฅ๋ณด๋ค๋ ์ง๋ณด๋ programming language ๊ธฐ์ ์
์ ์ฉํ์ฌ ๊ทผ๋ณธ์ ์ธ ํด๊ฒฐ์ฑ ์ ์ ๊ณตํ๋ค. Bifrost์ DApp์ ๊ฐ๋ฐ ๊ณผ์ ์์ ์ต์ํ์ ๋ ธ๋ ฅ์ผ๋ก ์ด์ค
๋ธ๋ก์ฒด์ธ ํ๊ฒฝ์ ๊ณ ๋ คํ๊ณ , ์ค์น ๋จ๊ณ์์๋ ์๋์ผ๋ก ๋ค์ค ๋ธ๋ก์ฒด์ธ์ ์ ํฉํ ํํ๋ก ์ฌ๊ตฌ์ฑ๋๋ค.
์ฌ๊ตฌ์ฑ์ ๊ณผ์ ์์๋ ๊ฐ๊ฐ์ ๋ธ๋ก์ฒด์ธ์์ smart contract๋ฅผ ํํํ๊ธฐ ์ํด์ ์ฌ์ฉํ๋ ํ๋ก๊ทธ๋๋ฐ
8
์ธ์ด๋ ์ค๊ฐ ์ธ์ด ํํ๋ก ๋ณํ(transpile)๋จ์ผ๋ก์จ, overhead๋ฅผ ์ ๋ฐํ๋ ์ถ์ํ ๊ณ์ธต ์์ด ์คํ๋
์ ์๋๋ก ํ๋ค. ํนํ Bifrost๋ ํ๋ผ์ด๋น ๋ธ๋ก์ฒด์ธ๊ณผ ํผ๋ธ๋ฆญ ๋ธ๋ก์ฒด์ธ์ ์กฐํฉํ ํ๊ฒฝ์ ์ ๊ณตํ ์
์์ด, ํ๋ผ์ด๋น ๋ธ๋ก์ฒด์ธ์ ์ฑ๋ฅ์ ์ ์งํ๋ฉด์ ํผ๋ธ๋ฆญ ๋ธ๋ก์ฒด์ธ์์์ ํ ํฐ ์์คํ ๊ณผ ์ฐ๋ํ๊ฑฐ๋
์์ ์ฑ์ ๋ํ ๊ฒ์ฆ์ ๊ฐํํ ์ ์๋๋ก ํ๋ค. ์ด๋ฌํ ๊ณผ์ ์ Solidity์ ๊ฐ์ ๊ธฐ์กด์ ์ค๋งํธ ์ปจํธ
๋ํธ ์ธ์ด๋ฅผ ํ์ฅํ๋ ๋ฐฉ์๋ ๊ฐ๋ฅํ์ง๋ง, ์ด์ค ๋ธ๋ก์ฒด์ธ์ ํ์ฉํ๊ธฐ ์ํ ์๋ก์ด ํ๋ก๊ทธ๋จ ๋ชจ๋ธ์
์ง์ํ๊ธฐ ์ํ์ฌ ์ฐ๋ฆฌ๋ ์๋ก์ด DApp ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ธ Recipe๋ฅผ ์ ๊ณตํ๋ค.
How Bifrost works. Bifrost๋ ์ด์ค ๋ธ๋ก์ฒด์ธ ์์คํ ์์์ DApp์ ๋์์ํค๊ธฐ ์ํ์ฌ
DApp์ ์ฌ๊ตฌ์ฑํ๊ณ ํ์ฅํ๋ค. ์ด์ค ๋ธ๋ก์ฒด์ธ ํ๊ฒฝ์ Bifrost Container ๋ค์ ์ํด์ ์ ๊ณต๋๋๋ฐ,
๋ณต์์ Bifrost Container๋ค์ด ํ๋์ ํ๋ผ์ด๋น/์ฐํฉ ๋ธ๋ก์ฒด์ธ ๋คํธ์ํฌ๋ฅผ ๊ตฌ์ฑํ๋ฉฐ ๋์ผํ ํผ๋ธ
๋ฆญ ๋ธ๋ก์ฒด์ธ ๋คํธ์ํฌ์ ์ฐ๊ฒฐํ๋ค. Bifrost๋ DApp์ ๊ด์ ์์ ํฌ๊ฒ (1) ๊ฐ๋ฐ๋จ๊ณ(development
phase), (2) ์ค์น๋จ๊ณ(deployment phase)์ (3) ์ด์๋จ๊ณ(operation phase)๋ก ๋๋์ด ์งํ๋๋ค.
DApp์ ๊ฐ๋ฐํ๋ ๋จ๊ณ์์๋ ์์ ์ ๋ชฉ์ ์ ๋ง๋ ๋ธ๋ก์ฒด์ธ ์์คํ ์ ์กฐํฉ์ ํ์ ํ๊ณ , smart
contract์์ ์ด๋ ํ ๋ณ์์ ํจ์๊ฐ ๊ฐ ๋ธ๋ก์ฒด์ธ ์์คํ ์ ํด๋นํ๋ ์ง๋ฅผ ๋ช ์ํ๋ค. Bifrost๋
์ค์น๋จ๊ณ์์ DApp์์ ์ฃผ์ด์ง ์ ๋ณด์ ๋ฐ๋ผ DApp์ ํจ์๋จ์๋ก ๋ถ๋ฆฌํ๊ณ ๋์์ ์ฐ๊ฒฐ์ ํ์ํ
์ ๋ณด๋ฅผ์์ฑํ๋ค.๋ถ๋ฆฌ๋ DApp์๊ฐ๋ธ๋ก์ฒด์ธ์์คํ ์๋ง๋ smart contract์ฝ๋๋ก๋ณํ๋๋ค.๊ทธ๋ฆฌ
๊ณ ์ฌ๊ตฌ์ฑ ๊ณผ์ ์์ ๋ฐ์ํ ์ฝ๋์ ๋ณ๊ฒฝ์ ์ํด์ ์ผ๊ธฐ๋ ๋ณด์์ ๋ฌธ์ ์ ๊ณผ ๋ถ๋ฆฌ๋ ๋์์์ ๋ฐ์ํ
์ ์๋ ๋ณด์์ ๋ฌธ์ ์ ์ ํ์ธํ๊ธฐ ์ํ์ฌ ๊ฐ ๋ถ๋ถ์ ๋ํ ์๋ ๋ณด์ ์ ๊ฒ์ ์ค์ํ๋ค. ์์ ์ฑ์ด
ํ์ธ๋ DApp์ ๊ฐ๋ฐ์๊ฐ ์ ํํ Bifrost Container์ ํผ๋ธ๋ฆญ ๋ธ๋ก์ฒด์ธ์ ์ค์น๋๋ค. ์ด์ด์ง๋
์ด์๋จ๊ณ์์ Bifrost Container๋ DApp์ ๋ถ๋ฆฌ๋ ๋ถ๋ถ๋ค์ ์ฐ๋์ ์ง์ํ๋ค.
The overall process. Bifrost์ํ๋ซํผ์์ด์ฉํ DApp์๋น์ค๊ณผ์ ์๊ทธ๋ฆผ 1๊ณผ๊ฐ์ด์งํ๋๋ค.
์ธ๋ถ์ ์ผ๋ก๋ ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ ๊ฑฐ์น๊ฒ ๋๋ค.
1. ๊ฐ๋ฐ์๋๋ธ๋ก์ฒด์ธ์๋น์ค DApp์์ค๊ณํ๋ฉด์ํ์ํ์ด์ค๋ธ๋ก์ฒด์ธ์์กฐํฉ์๊ฐ์ถ Bifrost
Container๋ฅผ ์ ํํ๋ค.
2. Recipe ์ธ์ด๋ฅผ ์ด์ฉํ์ฌ DApp์ ๊ฐ๋ฐํ๋ค.
3. ๊ฐ๋ฐ๋ DApp์ ์ฑ๋ฅ๊ณผ ๋ณด์์ ๋ฌธ์ ๋ฅผ ๊ณ ๋ คํ์ฌ ํผ๋ธ๋ฆญ ํํธ์ ํ๋ผ์ด๋น ํํธ์์ ๋์ํ
๊ธฐ๋ฅ์ ํ๊ธฐํ๋ค.
4. DApp์ ๋ชฉ์ ์ ๋ฐ๋ผ ํ๋ผ์ด๋น ๋ธ๋ก์ฒด์ธ container์ ์ค์น๋ ์ปดํฌ๋ํธ์ ํผ๋ธ๋ฆญ ๋ธ๋ก์ฒด์ธ์
์ค์น๋ ์ปดํฌ๋ํธ, ๊ทธ๋ฆฌ๊ณ ๋ ์ฌ์ด๋ฅผ ์ฐ๊ฒฐํ๊ธฐ ์ํ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ Linker description ๋ถ๋ถ
์ผ๋ก ๋ถ๋ฆฌ๋์ด ์ฌ๊ตฌ์ฑ๋๋ค.
5. Bifrost๋ ์์ฑ๋ ๊ฐ ์ปดํฌ๋ํธ๋ค์ ์ฉ๋์ ๋ง์ถ์ด ๊ฐ์์ ์์น์ ์ค์น๋๋ค.
DApp์ operation ๋จ๊ณ์์๋ ๋ค์๊ณผ ๊ฐ์ Bifrost์ ์ง์์ ํตํด์ ์๋น์ค๋ฅผ ์ด์ํ๋ค.
9
โข ํ๋ผ์ด๋น ๋ธ๋ก์ฒด์ธ ์ปดํฌ๋ํธ๋ ์์ ์ด ์ค์น๋ Container์ ํ๋ผ์ด๋น ๋ธ๋ก์ฒด์ธ์ ๋ด๋ถ ๊ธฐ๋ฅ์
์ด์ฉํ๋ค.
โข Bifrost Linker๋ ๋ถ๋ฆฌ๋์ด ์๋ ๋ ์ปดํฌ๋ํธ ์ฌ์ด์ state ์ ๋ณด๋ฅผ ์ผ์น์ํค๊ณ , ์ ์ด ํ๋ฆ์
์ฐ๊ฒฐํ๋ค.
โข ํผ๋ธ๋ฆญ ๋ธ๋ก์ฒด์ธ ์ปดํฌ๋ํธ๋ ๊ธฐ์กด์ ๋ธ๋ก์ฒด์ธ์์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ํ์ฉํ๋ค.
Bifrost๋ ์๋ก์ด ๋ธ๋ก์ฒด์ธ์ ๋ง๋ค์ง ์๊ณ ๊ธฐ์กด์ ๋ธ๋ก์ฒด์ธ์ ์ฌ์ฉํ๋ค. ํผ๋ธ๋ฆญ ๋ธ๋ก์ฒด์ธ๊ณผ ํ
๋ผ์ด๋น๋ธ๋ก์ฒด์ธ์์ํ๊ณต๊ฐ์๋ง๋ค์ด๋๊ณ ๊ธฐ์กด์๋ธ๋ก์ฒด์ธ๋ค์๊ฐ๊ฐ์์์น์์กฐํฉํ์ฌ์ฌ์ฉํ๋ค.
ํผ๋ธ๋ฆญ ๋ธ๋ก์ฒด์ธ์ ๊ฒฝ์ฐ์๋ ๋์ ์ค์ธ ๋ธ๋ก์ฒด์ธ ์์คํ ์ ์ฐ๊ฒฐํ๊ณ , ํ๋ผ์ด๋น ๋ธ๋ก์ฒด์ธ๊ณผ ๋๋จธ์ง
๊ธฐ๋ฅ๋ค์ Bifrost Node ์์คํ ์์์ ์ด์๋๋ค.
2.3 Node Architecture
Bifrost์ Node ์์คํ ์ ํผ๋ธ๋ฆญ ๋ธ๋ก์ฒด์ธ๊ณผ ํ๋ผ์ด๋น ๋ธ๋ก์ฒด์ธ์ ๊ฑธ์ณ DApp์ด ์คํ๋ ์ ์๋
ํ๊ฒฝ์ ์ ๊ณตํ๋ค. Bifrost์ ์ด์๋จ๊ณ์์๋ ์ด์ค ๋ธ๋ก์ฒด์ธ์ ์ฅ์ ์ ํ์ฉํ๊ธฐ ์ํด์ ๋ ๋ฆฝ๋
๋ธ๋ก์ฒด์ธ ์์คํ ์ ๋ฌถ๊ณ ์ฐ๊ฒฐํ๋ ๊ธฐ๋ฐ ์์คํ ์ด ํ์ํ๋ค. ํนํ ์ด๋ฌํ ์์คํ ์ ์ฌ๊ตฌ์ฑ๋ DApp
๋ค์ ์ฐ๋์ ๊ณ ๋ คํ์ฌ ๋ค์ํ ๋ ๋ฒจ์์์ ์ฐ๋์ ์ง์ํ ์ ์์ด์ผ ํ๋ค. ๋ฐ๋ผ์ Bifrost Node๋
stack ๊ตฌ์กฐ๋ฅผ ํตํ์ฌ ๋ธ๋ก์ฒด์ธ๊ฐ ์ฐ๋์์๋ถํฐ DApp ํํธ๊ฐ ์ฐ๋๊น์ง ๋ค์ํ ๋ ๋ฒจ์ ์ฐ๋์ ์ฃผ์
๋ชฉ์ ์ผ๋ก ํ๋ค.
Modular design. Bifrost Node๋ ๋ธ๋ก์ฒด์ธ ์ ํ์ ์ ์ฐ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด์ ํผ๋ธ๋ฆญ ๋ธ๋ก์ฒด
์ธ์ ์ ์ธํ ๋ถ๋ถ์ ๋ชจ๋ํํ์ฌ ๊ตฌ์ฑํ๋ค. ํฌ๊ฒ ํ๋์ Node๋ ํ๋์ Container manager์ ๊ทธ ์
์์ ๋์ํ๋ Container๋ค๋ก ๊ตฌ์ฑ๋๋ค. ํ๋์ Container๋ ๋ ๋ฆฝ๋ ์ปจํ ์ด๋ ๊ตฌ์กฐ๋ก์ Bifrost์
ํ๋ผ์ด๋น ๋ธ๋ก์ฒด์ธ ํํธ๋ฅผ ๋ด๋นํ๋ค. Container์๋ ์ค์ฌ์ด ๋๋ ํ๋ผ์ด๋น ๋ธ๋ก์ฒด์ธ ์์คํ ๊ณผ ํจ๊ป,
๋ธ๋ก์ฒด์ธ๊ณผ DApp์ ์ฐ๊ฒฐํ๊ธฐ ์ํ Linker ์์คํ , ์ธ๋ถ์์ ์ฐ๊ฒฐ์ ์ํ I/O interface, ๋คํธ์ํฌ
์ฐ๊ฒฐ์ ๋ด๋นํ๋ Dual connection manager ๋ฑ์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ค. Container manager๋ docker์
์ปจํ ์ด๋ ๊ด๋ฆฌ ์์คํ ์ ํตํด์ Container๋ค์ ์์ฑ๊ณผ ํ์ฅ ๋ฐ ๊ด๋ฆฌ๋ฅผ ๋ด๋นํ๋ค.
Stacks in two views. ๊ทธ๋ฆผ 2๋๊ฐ๋ ์ ์ธํํ์ Bifrost Node์๊ตฌ์ฑ์๋ณด์ฌ์ค๋ค. Bifrost์
Node ๊ตฌ์กฐ๋ ์์คํ ์ ๊ตฌ์ฑ๊ณผ ๋ฐ ์คํ์ ๋จ๊ณ๋ฅผ ๋ชจ๋ ํฌํจํ๊ณ ์๊ธฐ ๋๋ฌธ์, ์ ์ฒด์ ์ผ๋ก๋ 3์ฐจ์์
stackํํ๋ก๋ํ๋ ์์๋ค. Execution stack์์๋ Bifrost์ Node๊ฐํผ๋ธ๋ฆญ๋ธ๋ก์ฒด์ธ์์คํ ๊ณผ
๋ณํํ์ฌ ํ๋์จ์ด์์๋ถํฐ ์ด๋ ํ ๊ธฐ๋ฅ์ ๊ณ์ธต์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋์ง๋ฅผ ๋ณด์ฌ์ค๋ค. Operation stack
์์๋ DApp์ด ์ค์น๋ ์ดํ์ Bifrost๋ฅผ ํตํด์ ํผ๋ธ๋ฆญ ๋ธ๋ก์ฒด์ธ๊ณผ ํ๋ผ์ด๋น ๋ธ๋ก์ฒด์ธ์ ์์์
์ด์ฉํ์ฌ DApp์ component๋ค์ด ์ฐ๋ํ๋ฉฐ ์คํ๋๋์ง๋ฅผ ๋ณด์ฌ์ค๋ค.
10
Public Blockchain
Container manager
Private BlockchainContainers
Operation Stack
Execution Stack
๊ทธ๋ฆผ 2: Bifrost Node architecture
2.4 Execution Stack
Execution stack์ ๊ทธ๋ฆผ 3๊ณผ ๊ฐ์ด ๊ตฌ์ฑ๋๋ค. Execution stack์ ๊ธฐ๋ฅ์ ์ธ ๊ณ์ธต๊ตฌ์กฐ๋ก์ ๋ธ๋ก์ฒด์ธ
์์คํ ์ผ๋ก๋ถํฐ ํ๋ซํผ์ ๊ตฌ์ถํ๊ธฐ ์ํด ํ์ํ ์์๋ฅผ ๊ฐ์ถ๊ณ ์๋ค. Execution stack์ ํ ์ถ์
ํผ๋ธ๋ฆญ ๋ธ๋ก์ฒด์ธ์ด๊ณ ๋๋จธ์ง๋ ํ ์ถ์ ํ๋ผ์ด๋น ๋ธ๋ก์ฒด์ธ์ ๋ฐํ์ผ๋ก Bifrost์ ์ฐ๋ ๊ธฐ๋ฅ๋ค์ด
ํ์ฌ๋์ด ์๋ Container๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
Public blockchain. ์ฐ๋ฆฌ๋ ํผ๋ธ๋ฆญ ๋ธ๋ก์ฒด์ธ ์์คํ ์ด ํฉ์ ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋คํธ์ํฌ๋ก ๊ตฌ์ฑ๋
Blockchain Subsystem ๋ถ๋ถ๊ณผ ๊ธฐ๋ณธ์ smart contract๋ฅผ ์คํํ ์ ์๋ ์ต์ํ์ ์คํ(runtime)
ํ๊ฒฝ์ ๊ฐ์ง๊ณ ์๋ค๋ ๊ฒ์ ๊ฐ์ ํ๋ค. ํผ๋ธ๋ฆญ ๋ธ๋ก์ฒด์ธ์ ๊ธฐ์กด์ ์์คํ ์ ๋ณ๊ฒฝ์์ด Node์์ ํด๋น
ํผ๋ธ๋ฆญ๋ธ๋ก์ฒด์ธ์ผ๋ก์์ฐ๊ฒฐ์์ ์งํ์ฌ์ฐ๋ํ๋ค.ํผ๋ธ๋ฆญ๋ธ๋ก์ฒด์ธ์๋ DApp์ public component
๊ฐ ์คํ๋๋ฉฐ, Bifrost์์ ์ฌ์ฉํ๋ token system์ธ BFC๋ฅผ ์ด์ํ๋ค. (ยง4.1.1)
Container. ํ๋์ Container๋ ํ๋ผ์ด๋น ๋ธ๋ก์ฒด์ธ ์์คํ ์ ๋ฐํ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ์ฃผ์ ๋ชจ๋๋ค
์ ํฌํจํ๊ณ ์๋ค.
โข Private Blockchain + Smart Contract Runtime Environment: Container์ ํต์ฌ์ ํ๋ผ์ด๋น
๋ธ๋ก์ฒด์ธ๊ณผ smart contact ์คํ์ ์ํ ๋ฐํ์ ํ๊ฒฝ์ด๋ค. ๊ธฐ๋ณธ์ ์ธ ์กฐ๊ฑด์ ๋ง์กฑ์ํค๋ ์ด๋ ํ
ํ๋ผ์ด๋น ๋ธ๋ก์ฒด์ธ๋ ์ ์ฉ ๊ฐ๋ฅํ๋ค. ์ด ํ๋ผ์ด๋น ๋ธ๋ก์ฒด์ธ์ Container๊ฐ ์ฐ๊ฒฐ๋์ด ์๋
ํผ๋ธ๋ฆญ ๋ธ๋ก์ฒด์ธ๊ณผ ๊ฐ์ ์์คํ ์ด์ด๋ ๋๊ณ , ์ฉ๋์ ๋ฐ๋ผ ๋ค๋ฅธ ์ค์ ์ ๊ฐ์ง๊ฑฐ๋ ์๋ก ์์ดํ
์์คํ ์ผ๋ก ๊ตฌ์ฑํ ์ ์๋ค.
โข Dual Connection Manager: ๋ธ๋ก์ฒด์ธ ์์คํ ๊ฐ์ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ ๋ด๋นํ๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก๋
11
Node
(Public)BlockchainSubsystem
Smart Contract Runtime Environment
(e.g., EVM)
(Private)BlockchainSubsystem
Smart Contract Runtime Environment
DAppPublic component
DAppPrivate component
TokenSystem
I/OTap
DApp-wise
Linker
I/Ointerface
DAppCoinEco-
systemUser
Interface
DualConn.
Manager
Container-wise
Linker
Container Manager
Containers (Federation)
Public Blockchain
๊ทธ๋ฆผ 3: Bifrost execution stack
ํผ๋ธ๋ฆญ๋ธ๋ก์ฒด์ธ๊ณผํ๋ผ์ด๋น๋ธ๋ก์ฒด์ธ์๋ฐฉํฅ์ผ๋ก์์ฐ๊ฒฐ์์ง์ํ๋ค.ํ๋ผ์ด๋น๋ธ๋ก์ฒด์ธ์์
๋ค์์ ๊ธฐ๊ด์ด ๋ค์์ Node๋ก ์ฐธ์ฌํ๋ ์ฐํฉ(federation)์ ๊ตฌ์ฑํ ๊ฒฝ์ฐ Dual Connection
Manager๊ฐ ์ฐํฉ ๋ ธ๋๋ค๊ฐ์ ์ฐ๊ฒฐ๋ ๋ด๋นํ๋ค.
โข Linker: Bifrost๋ ํ๋์ DApp์ private component์ public component๋ก ๋๋์ด Con-
tainer์ ํผ๋ธ๋ฆญ ๋ธ๋ก์ฒด์ธ์ ์ค์นํ๋ค. ์ด ๋, ๋ ์ฌ์ด์ ์ฐ๊ฒฐ์ ์ํ์ฌ ๊ฐ ์ปดํฌ๋ํธ์๋ stub
code๊ฐ ์์ฑ๋๊ณ ์ด stub code์ Linker๊ฐ ์ฐ๊ฒฐ๋์ด ๋ ์ปดํฌ๋ํธ๋ฅผ ์ฐ๋ํ๋ค. Linker๋ ๊ฐ
DApp์๋ง๋๊ธฐ๋ฅ์์ง์ํ๊ธฐ์ํ DApp-wise Linker์์ด๋ฌํ DApp-wise Linker๋ค์์ ์ฒด
์ ์ผ๋ก ๊ด๋ฆฌํ๋ฉฐ Container ๋จ๊ณ์์์ ์ฐ๊ฒฐ์ ๋ด๋นํ๋ Container-wise Linker๋ก ๊ตฌ๋ถ๋๋ค.
โข I/O Interface์ I/O Tap: I/O interface๋ web, storage, external oracle (data feed)๋ฑ์์ธ๋ถ
์ฐ๊ฒฐ์ ํต์ผ๋ ํํ๋ก ์ฌ์ฉํ ์ ์๋๋ก ์ง์ํ๋ค. I/O Tap์ ํ๋ผ์ด๋น ๋ธ๋ก์ฒด์ธ ๋ด์์ ์
์๋๋ smart contract๋ก์ DApp์ private component์์ I/O Interface๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ
์ฐ๊ฒฐ์ ์ผ๋ก ๋์ํ๋ค.
2.5 Operation Stack
Private component. ๊ทธ๋ฆผ 4์ operation stack์์๋ DApp์ด ์ด์๋๋ ๊ณผ์ ์์ ํ์ํ ์
์๋ฅผ ๋ณด์ฌ์ค๋ค. ํ๋์ DApp์ private component๋ฅผ ์ค์ฌ์ผ๋ก ํผ๋ธ๋ฆญ ๋ธ๋ก์ฒด์ธ์์ ์ํ๋์ด์ผ
ํ๋ ์์ ์ public component๋ก ๋ถ๋ฆฌํ์ฌ ์ด์ํ๋ค. ๊ฐ DApp์ ์ฐ๊ฒฐ์ ์ํ Linker์ ์ธ๋ถ์ฐ๊ฒฐ์
์ํ I/O Tap์ ๋ณ๋๋ก ๊ฐ์ง๊ฒ ๋๋ค. DApp๋ง๋ค์ ๋ด๋ถ์ ์ธ ํ๋ก๊ทธ๋จ ๊ตฌ์กฐ(ํจ์ ๊ตฌ์กฐ)์ ๋ฐ๋ผ์ ๋
private๊ณผ public component์ ์ฐ๊ฒฐ ๋ฐฉ์๊ณผ ์ ์ถ๋ ฅ ๋ฐฉ๋ฒ์ด ๋ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์, Bifrost Builder์์
๋ถ๋ฆฌ ์์ฑํ๋ ๊ณผ์ ์์ Linker ์ค์ ๋ฐ I/O Tap๋ ํจ๊ป ์์ฑํ๋ค.
12
I/O Module I/O Module
Public BlockchainPrivate Blockchain
Linker
DApp (1)Private
component
DApp (1)Public
component
I/O Tap
DApp (2)Private
component
I/O Tap
I/O Tap
DApp (3)Private
component
DApp (3)Public
component
DApp (1)Linker
DApp (2)Linker
DApp (3)Linker
Token system
๊ทธ๋ฆผ 4: Bifrost operation stack
Public component. ํผ๋ธ๋ฆญ๋ธ๋ก์ฒด์ธ์์๋์ํ๋ public component๋๋ชจ๋ ๋์๊ณผ์ ์ด์์
ํ๊ฒ ํผ๋ธ๋ฆญ ๋ธ๋ก์ฒด์ธ์ ์ํด์ ๊ฒ์ฆ์ ๋ฐ๋๋ค. ๋ค๋ง, ๊ธฐ๋ฐ์ด ๋๋ ํผ๋ธ๋ฆญ ๋ธ๋ก์ฒด์ธ์ ๋์ ๋ฐฉ์์
๋ฐ๋ผ์ ์คํ์ ์ํ ๋น์ฉ(e.g, gas in Ethereum)๋ค์ ๊ณ ๋ คํ์ฌ ๋์ ๋ฐฉ๋ฒ์ ๊ฒฐ์ ํ๋ค. ๋ํ, ํผ๋ธ๋ฆญ
๋ธ๋ก์ฒด์ธ์๋ Bifrost๋ฅผ ์ํ BFC Token System์ ์ค์นํ๊ณ Linker์ ์ง์ ์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์์ด
์, Bifrost์์ ๋ชจ๋ DApp์ BFC๋ฅผ ์์ ํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ค.
I/O Interface and Tap ํ๋์ Container๋ Linker์ ํจ๊ป ์ธ๋ถ ์ฐ๊ฒฐ์ ์ํ I/O Interface๋ฅผ
๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ์ด๋ I/O Tap๊ณผ ์ฐ๊ฒฐ๋์ด ํ๋ผ์ด๋น ๋ธ๋ก์ฒด์ธ ๋ด๋ถ๋ก์ ์ ๋ฌ ๋ฐ ์ ํ๋ฅผ ๋ด๋นํ๋ค.
DApp์ ์ด์๊ณผ์ ์์ ์ฃผ๊ธฐ์ ์ผ๋ก ํธ์ถ๋์ด์ผ ํ๋ ๊ธฐ๋ฅ(timer)์ด๋ ๋์ฉ๋ ๋ฐ์ดํฐ์ ์ ์ฅ ๋๋
๊ฒ์๊ณผ ๊ฐ์ ์์ ๋ค์ I/O Tap์ smart contract์ ์ ์๋์ด ์๋ ํจ์๋ฅผ ํธ์ถํ์ฌ ์ฌ์ฉํ๊ฒ ๋๋ค.
3 Recipe for Dual-component DApps
3.1 Motivations
Bifrost๋ DApp์ด ์ด์ค ๋ธ๋ก์ฒด์ธ์ ์ฅ์ ์ ํ์ฉํ ์ ์๋๋ก ํ๋ค. ๊ทธ๋ฌ๊ธฐ ์ํด์ DApp์ ๊ฐ๋ฐ
๊ณผ์ ์ ์๊ตฌ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ด ์ ๋ฆฌํ ์ ์๋ค.
1. DApp์ด ๋ถ๋ฆฌ๋ ์ํ์์๋ ํ๋์ DApp์ฒ๋ผ ์ฐ๋ํ์ฌ ๋์ํ ์ ์์ด์ผ ํ๋ค.
2. ๊ฐ๊ฐ์ ๋ถ๋ฆฌ๋ ๋ถ๋ถ์ ํ๋ถ ๋ธ๋ก์ฒด์ธ์ ๋ง๋ ํํ๋ก ๋ณํ๋ ์ ์์ด์ผ ํ๋ค.
13
๋ฐ๋ผ์ Bifrost๋ DApp์ํ๋ผ์ด๋น๋ถ๋ถ๊ณผํผ๋ธ๋ฆญ๋ถ๋ถ์ผ๋ก๋๋๊ณ (split)๊ฐ๊ฐ์ํด๋น๋ธ๋ก์ฒด
์ธ ์์คํ ์ ํด๋นํ๋ native ์ค๋งํธ ์ปจํธ๋ํธ ์ธ์ด ๋๋ ์ค๊ฐ ์ธ์ด๋ก ๋ณํ(transpilation)ํ๋ ์ ๊ทผ
๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค.
Abstraction Layers for Universal Programs. ์ ํต์ ์ผ๋ก ์ด๊ธฐ์ข ์ ์์คํ ์์ ๋์ํ๋
ํ๋ก๊ทธ๋จ ์คํ ํ๊ฒฝ์ ๋ง๋๋ ๊ณผ์ ์์๋ ๋ํ๋์ virtual machine์ด๋ virtual OS์ ๊ฐ์ ์ถ์ํ
๊ฒ์ธต(abstraction layer)์ ์ถ๊ฐํ์ฌ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ง์ด ์ํํด ์๋ค. ํ์ง๋ง, ์ถ์ํ ๊ณ์ธต์ ๋ช
๋ น์ด๊ฐ ๊ฐ์ ์ ์ผ๋ก ์คํ๋๋ฉด์ ์ ์ฒด ์ฑ๋ฅ์ ๋จ์ด์ง๊ณ ํ์ ์์คํ ์ ๊ธฐ๋ฅ์ ์ง์ ์ ์ผ๋ก ์ฌ์ฉํ ์
์๋ค๋ ์ ์ฝ์ ๊ฐ์ง๊ณ ์๋ค.
Transpilation to Eliminate Abstraction Layers. Bifrost์ DApp์ universal program๋ค
๊ณผ๋น์ทํ๋ชฉ์ ์๊ฐ์ง๋ค.์ฐ๋ฆฌ๋ DApp์ด์ถ์ํ๊ณ์ธต์๋ฌธ์ ๋ฅผ๊ฒช์ง์์ผ๋ฉด์์กฐํฉ๋๋ธ๋ก์ฒด์ธ์์
์์ ๋กญ๊ฒ ๋์ํ๊ฒ ํ๊ณ ์ ํ๋ค. ๋ฐ๋ผ์ Bifrost์์๋ โAbstraction without guiltโ๋ฅผ ํ๋ฐฉํ๊ณ
์๋ multi-stage programming์์ ๊ทผ๋ฐฉ๋ฒ์์ทจํ๋ค.๊ณ ์์ค๋จ๊ณ์์์์ฑ๋ DApp์์์์ํ์ฌ
ํผ๋ธ๋ฆญ๊ณผํ๋ผ์ด๋น๋ถ๋ถ์ผ๋ก๋ถ๋ฆฌํ๊ณ , transpilation๊ณผ์ ์ํตํด์๊ฐ๊ฐ์๋ชฉ์ (target)๋ธ๋ก์ฒด์ธ์
๋ง๋ ์ธ์ด๋ก ๋ณํํ๋ค. ํนํ DApp์ ๊ตฌ์ฑํ๋ ์ค๋งํธ ์ปจํธ๋ํธ๋ ์ผ๋ฐ์ ์ธ ์ปดํจํ ํ๊ฒฝ์ ๋นํ์ฌ
์ฝ๋์ ํฌ๊ธฐ๊ฐ ํจ์ฌ ์์ผ๋ฉฐ, ๊ธฐ๋ฅ์ ์ผ๋ก ์๊ฒฐ๋(self-containing) ์ํ๋ฅผ ๊ฐ์ง๊ธฐ ๋๋ฌธ์, ์ฝ๋ ๋ ๋ฒจ์
์์ ๋ณํ์ ํ๋ transpilation ๊ณผ์ ์ ์ ํฉํ๋ค.
3.2 Recipe Language System
Bifrost์ ๊ทผ๋ฐฉ๋ฒ์ ์ด์ค ๋ธ๋ก์ฒด์ธ์์์ DApp ์ด์์ ๊ฐ๋ฅํ๊ฒ ํ์ง๋ง, ๋ค์๊ณผ ๊ฐ์ ์๊ตฌ์ฌํญ์
๊ณ ๋ คํด์ผ ํ๋ค.
โข ๊ฐ๋ฐ์๊ฐ DApp์ ๋ธ๋ก์ฒด์ธ์ ์ข ์๋์ง ์๊ณ (blockchain-agnostic) ์์ฑํ ์ ์๋ ์ค๋ฆฝ์ ์ธ
๋ฐฉ๋ฒ์ด ํ์ํ๋ค.
โข DApp์์ ๋ถ๋ฆฌ๋ ๋ component๋ Linker์ ์ค์ฌ์ ์ํด์ ๋์ ์คํ๋๋ค. ํ์ง๋ง ์ด๋ฌํ
๊ต์ฐจ ์คํ(cross execution)์ ์ง์ํ๊ธฐ ์ํด์๋ ๊ธฐ์กด์ ๋๊ธฐ์ (synchronous) ๋ช ๋ น์ด์ ์คํ
๊ณผ์ ์ด ๋น๋๊ธฐ์ (asynchronous)์ผ๋ก ๋ฐ๋๋ ํ๋ก๊ทธ๋จ ๋ชจ๋ธ์ ๋ณํ๊ฐ ํ์ํ๋ค. ๋ฐ๋ผ์ DApp
์ด ์ด๋ฌํ ๋น๋๊ธฐ ์คํ์ ๋ํ ๋ณํ์ ์ ์ํ ์ ์์ด์ผ ํ๋ค.
โข ์ค๋งํธ ์ปจํธ๋ํธ์ ์์ ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด์๋ correctness์ fairness์ ๋ฌธ์ ์ ์ ๋์์
๊ณ ๋ คํ๋ฉฐ ๊ฒ์ฆํด์ผํ๋ค. ํนํ ๋น๋๊ธฐ์ฑ์ด ์ถ๊ฐ๋ ์ํฉ์์ ์ค๋งํธ ์ปจํธ๋ํธ์ correctness
๊ฒ์ฆ์ ๋์ฑ ์ด๋ ค์ด ๋ฌธ์ ์ด๋ค. ๋ฐ๋ผ์, ์ธ์ด ๋ ๋ฒจ์์์ ์ง์์ด ํ์ํ๋ค. ์ค๋งํธ ์ปจํธ๋ํธ์
์๋ฏธ์ ์กฐ๊ฑด ๋ค์ ํํํ ์ ์๋๋ก ํ์ฌ, model checking๊ณผ ๊ฐ์ formal method ๋ค์ ์ ์ฉ์
๋์ธ ์ ์์ด์ผ ํ๋ค.
์ฐ๋ฆฌ๋ ์ด๋ฌํ ์๊ตฌ์ฌํญ์ ๋ฐํ์ผ๋ก ๊ทผ๋ณธ์ ์ผ๋ก DApp ๊ฐ๋ฐ์์ ํ๋ก๊ทธ๋จ์ ๋ํ ์ ๊ทผ ๋ฐฉ์
์ด๋ ๋ชจ๋ธ์ ๋ํ ๋ณํ๋ฅผ ์ ๋ํ๊ณ , ํจ๊ณผ์ ์ธ ๋ณํ ๊ณผ์ ์ ์ง์ํ๊ณ ์ ์๋ก์ด ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์ฒด
14
Recipe(High-level Lang.
for DApp)
RIL(Recipe Intermediate
Language)
RILU RILR
Target Language
Low-level Target Language
Module (blockchain specific)
Module (blockchain specific)
Target Language
Low-level Target Language
SCRE code SCRE code
Linker Desc.
Transpile Transpile
Split Split
Machine code
Abstracted
๊ทธ๋ฆผ 5: Recipe Language System
๊ณ๋ฅผ ๊ตฌ์ฑํ๋ค. DApp ๊ฐ๋ฐ์ ์ํ ๊ณ ์์ค ์ธ์ด์ธ โRecipeโ๋ฅผ ๋น๋กฏํ์ฌ Recipe๋ฅผ ์ํ ์ค๊ฐ์ธ์ด์ธ
RIL(Recipe Intermediate Language)์ ๋ณํ๊ณผ์ ์ ์ํ ๊ท์น์ ํจ๊ป ์ ์ํ๋ค. ๊ทธ๋ฆผ 5๋ Recipe
Language System์ ๊ตฌ์ฑ ๋ฐ ๋ณํ ๊ณผ์ ์ ๋ณด์ฌ์ค๋ค. ๊ทธ๋ฆผ์์ ์์ ์์นํ ์๋ก abstraction์ ๋ง์ด
ํฌํจํ๊ณ ์๊ณ ์๋๋ก ๋ด๋ ค๊ฐ ์๋ก ์ค์ ๋ธ๋ก์ฒด์ธ ์์คํ ์์ ์คํ๋๋ ์คํ ์ฝ๋์ ๊ฐ๊น์์ง๋ค.
Recipe Language System์ Bifrost๋ฅผ ์ํ์ฌ ๋ค์๊ณผ ๊ฐ์ ๋จ๊ณ๋ณ ์ธ์ด๋ฅผ ์ง์ํ๋ค.
โข Recipe:์ค๋งํธ์ปจํธ๋ํธ๋ฅผ๊ฐ๋ฐํ๊ธฐ์ํ๋ธ๋ก์ฒด์ธ์ค๋ฆฝ์ ์ธ์ธ์ด์ด๋ค.์ด์ค๋ธ๋ก์ฒด์ธ์์คํ
์ ๊ณ ๋ คํ์ฌ ๊ฐ ๋ณ์์ ํจ์๊ฐ ์ํ๋์ด์ผ ํ ๋์์ ์ง์ ํ ์ ์๋ค. ๋ํ ๋ถ๋ฆฌ๋ component
์ฌ์ด์ state์ ๋ณํ๋ ํจ์ ํธ์ถ ๊ณผ์ ์ asynchronous ํ ํน์ฑ์ ๊ณ ๋ คํ ํ๋ก๊ทธ๋จ ๋ชจ๋ธ์
๊ฐ์ง๊ณ ์๋ค. ๋ํ ์๋ํ๋ ๋ณด์์ฑ ๊ฒ์ฆ์ ์ง์ํ๊ธฐ ์ํ์ฌ DApp์ด ๊ฐ์ง๋ semantic ์ ๋ณด๋ฅผ
ํ๊ธฐํ ์ ์๋ค.
โข RIL (Recipe Intermediate Language): Recipe์ธ์ด์์ฒ๋ฆฌ๋ฐ๋ถ์์์ฉ์ด์ฑ์์ํ์ฌ์ฌ์ฉํ
๋์ค๊ฐ์ธ์ด์ด๋ค.์๋ํ๋์ฒ๋ฆฌ๋ฅผ์ํ์ฌ Recipe๋ณด๋ค๋ช ํํ๊ณ ๋จ์ํ๋๋ฌธ๋ฒ์๊ฐ์ง๊ณ ์๋ค.
๋ด๋ถ์ ์ผ๋ก๋ RIL ์ํ์์ ์ฝ๋์ ๋ถ๋ฆฌ์ ์ฐ๊ฒฐ์ ์์ฑ๋ฑ์ ๋ณํ์ด ์ด๋ฃจ์ด์ง๋ค. ํ๋ผ์ด๋น๊ณผ
ํผ๋ธ๋ฆญ ๋ธ๋ก์ฒด์ธ์ ์ํด ๋ถ๋ฆฌ๋ RIL์ ๊ฐ๊ฐ RILL ๊ณผ RILU ๋ผ๊ณ ํ๋ฉฐ ๋ํ RIL์ transpile
๊ณผ์ ์ ์ํ์ฌ module ์์คํ ์ ์ง์ํ๋ค.
15
โข Target language:๋ธ๋ก์ฒด์ธ์์คํ ๋ค์์์ค๋งํธ์ปจํธ๋ํธ๋ฅผ์์ฑํ๋๋ฐ์ฌ์ฉํ๋ํ๋ก๊ทธ๋๋ฐ
์ธ์ด๋ก, ํ์ฌ ์ฌ์ฉ๋๊ณ ์๋ Solidity๋ Go์ ๊ฐ์ ์ธ์ด๋ฅผ ์๋ฏธํ๋ค. ์ด๊ฒ์ ๋๋นํ์ฌ, ์ด๋ฌ
ํ ์ธ์ด๋ค์ build ๊ณผ์ ์์ ์ฌ์ฉ๋๊ฑฐ๋ ์คํ ์ฝ๋์ ๋ ๊ฐ๊น์ด ์ค๊ฐ ์ธ์ด๋ฅผ low-level target
language๋ก ๊ตฌ๋ถํ๋ฉฐ. LLL์ด๋ LLVM ๋ฑ์ด ์ด์ ํด๋น๋๋ค.
โข SCRE(Smart Contract Runtime Environment) code: ์ค๋งํธ์ปจํธ๋ํธ์คํ์์ฌ์ฉ๋๋์ฝ๋
์ํ๋ฅผ ์๋ฏธํ๋ค.
3.3 Splitting and Transpilation
Recipe๋ ์ธ์ด ๋ ๋ฒจ์์์ ๋ถ๋ฆฌ์ ๋ณํ ๊ณผ์ ์ ์ง์ํ๋ค. Recipe ํ๋ก๊ทธ๋จ ์ฝ๋์์ ์ง์ ํ ์ ๋ณด๋ฅผ
๋ฐํ์ผ๋ก Bifrost๋ RIL ์ฝ๋๋ฅผ ์์ฑํ๊ณ ๋ถ๋ฆฌํ๋ค.
Cross Variables and Functions. ์ฐ๋ฆฌ๋ ์์ชฝ์ component์์ ์ฌ์ฉ๋๋ ๋ณ์์ ํจ์๋ฅผ ๊ฐ
๊ฐ โcross variableโ๊ณผ โcross functionโ์ผ๋ก ์ ์ํ๋ค. ์ผ๋ฐ์ ์ผ๋ก ํผ๋ธ๋ฆญ ๋ธ๋ก์ฒด์ธ์์ ์ฌ์ฉ๋๋
์ ๋ณด๋ค์ด cross variable๊ณผ cross function์ผ๋ก ์ค์ ๋๋ค. Cross variable๊ณผ function์ ๋ํ ์ ๋ณด๋ฅผ
๋ฐํ์ผ๋ก๊ฐ component๋ณ๋ก๋ด๋ถ์์๋ง์ฌ์ฉ๋๋ local variable๋ํ โcomponent local variableโ๋ก
๊ตฌ๋ถํ๋ค. Cross variable๊ณผ cross function์๋ component์ฌ์ด์์์ ์๋๋ฏ๋กํ์ ๋๊ฑฐ๋๊ฒฐ๊ณผ๋ฅผ
์ป๊ธฐ ์ํ์ฌ Linker์ ์ค์ฌ๊ฐ ํ์ํ๋ค. ๋ฐ๋ผ์ cross variable๊ณผ cross function์ ๋ํ ํธ์ถ ๊ฒฐ๊ณผ๋
transient ์ finalized ์๋๊ฐ์ง์ํ๋ฅผ๊ฐ์ง๋ค. Transient์ํ์๊ฒฝ์ฐ์๋๊ฐ์ํ์ ์ด์ด๋ฃจ์ด์ง๊ณ
์๊ธฐ ๋๋ฌธ์, ํด๋น ๊ฐ์ ์ฌ์ฉํ ์ ์๋ค. ํด๋น ๊ฐ์ finalized ์ํ๋ก ๋ณ๊ฒฝ์ด ์ด๋ฃจ์ด ์ก์ ๋์ ์ฌ์ฉํ
์ ์๊ฒ ๋๋ค. Bifrost์์๋ ๋ถ๋ฆฌ์ ๊ณผ์ ์์ cross variable๋ก ์ค์ ๋ ๋ณ์๋ ์ํ๋ฅผ ํ์ธํ๊ณ
์ฌ์ฉํ ์์๋๋ก lock/unlock๊ธฐ๋ฅ์์ถ๊ฐํ๋ค.๋ํ, Recipe์์ cross function์ finalized๋ํธ์ถ
์ฒ๋ฆฌํ ์ ์๋ callback ๋ฐฉ์์ handler ์ฝ๋๋ฅผ ์ง์ํ๋ค.
Process to Build Dual Components. ์ปดํฌ๋ํธ ์์ฑ ๊ณผ์ ์ ๋ธ๋ก์ฒด์ธ์ ํน์ฑ์ ๋ฐ๋ผ ๋ค๋ฅธ
๋ฐฉ๋ฒ์ด ์ ์ฉ๋ ์ ์์ง๋ง, ๊ณตํต์ ์ผ๋ก๋ ๋ค์๊ณผ ๊ฐ์ ์ ์ฐจ๋ฅผ ํตํด์ ์งํ๋๋ค.
1. Recipeํ๋ก๊ทธ๋จ์ฝ๋์ํ๊ธฐ๋ฅผ๋ฐํ์ผ๋ก์ปดํฌ๋ํธ๋ณ๋กํฌํจ๋ ๋ณ์์ํจ์์ set์๊ตฌ๋ถํ๋ค.
2. Recipe ํ๋ก๊ทธ๋จ์ RIL ํํ๋ก ๋ณํํ๋ค.
3. ๋ถ์์ ํตํ์ฌ RIL ํ๋ก๊ทธ๋จ ๋ด์ control/data dependency (super-)graph์ ์์ฑํ๋ค.
4. Private component์ public component์ ํด๋นํ๋ RILL ๊ณผ RILU ๋ก ๋ถ๋ฆฌํ๋ค.
5. ๋ component ๊ฐ์ ๊ตฌ๋ถ(boundary)๋ฅผ ๋๋ control flow์ data flow๋ฅผ ์๋ณ(identify)ํ๋ค.
6. RILL ๊ณผ RILU ๊ฐ๊ฐ์ ๋ํ์ฌ ์๋ณ๋ flow์ ์ฐ๊ฒฐ์ (crossing point)์ ํด๋นํ๋ stub code๋ฅผ
์ถ๊ฐํ๋ค. Cross function์ Linker์ ํด๋น ํธ์ถ์ด ๋ฐ์ํ์์ ์๋ฆฌ๋ stub code๋ก ๋ณ๊ฒฝํ๊ณ
cross variable์ ๋ณ๊ฒฝ์ setter ํจ์๋ก ๋ณ๊ฒฝํ๋ค.
16
7. ์ฐ๋ ๊ณผ์ ์์ Linker๊ฐ ๊ด์ฐฐํด์ผ ํ๋ cross function ๋๋ cross variable ๋ค์ ์ ๋ณด ๋ฑ์ด ํฌ
ํจ๋์ด ์๋ ์ฐ๋์ ์ํ Linker description ์ ๋ณด๋ฅผ ์์ฑํ๋ค.
8. ์์ฑ๋ component์ ๋จ๊ณ๋ณ ๊ฒฐ๊ณผ๋ฅผ ํ์ฉํ์ฌ DApp ์ ์ฒด ๋ชจ๋ธ์ ๋ํ correctness์ fairness
์ ๋ํ ์์ ์ฑ์ ์๋ ์ ๊ฒ ํ๋ค.
9. Blockchain-specific module ์์คํ ๊ณผ syntax rule์ ์ ์ฉํ์ฌ RILL ๊ณผ RILU ๋ฅผ ๋์ ๋ธ๋ก์ฒด
์ธ์ ๋ํ ์ธ์ด๋ก ๋ณํ(transpile)ํ๋ค.
์์ ๊ณผ์ ์ ํตํด์ ํ๋์ DApp Recipe์์ ์ต์ข ์ ์ผ๋ก ๋ธ๋ก์ฒด์ธ ์์คํ ๋ง๋ค์ SCRE code
๋ค์ ๋ชจ์๊ณผ Linker์ ์ ๋ฌํด์ผ ํ ์ ๋ณด์ธ Linker description์ ์ป๊ฒ๋๋ค. ์ด ํ ๊ฐ SCRE-code
component๋ค์ ๋ธ๋ก์ฒด์ธ์ ์ค์นํ๊ณ Linker description์ Linker์ ์ ๋ฌํจ์ผ๋ก์จ DApp ์๋น์ค๋ฅผ
์ด์์ ์์ํ๋ค.
Bifrost์ DApp์์๋๋ถ๋ฆฌ์์ฑ๊ณผ์ ์์๋ฐ์ํ ์์๋๋ณด์์์ทจ์ฝ์ ์์ต์ํํ๊ธฐ์ํด์
์ปดํฌ๋ํธ์ ์์ฑ๊ณผ ๋ณด์์ฑ ์ ๊ฒ์ ํตํฉํ์ฌ ์ํํ๋ค. ๋ํ, ์ปดํฌ๋ํธ ๋ ๋ฒจ์์์ ๋ณด์์ฑ๊ณผ ํจ๊ป
DApp๋ ๋ฒจ์์์ปดํฌ๋ํธ๋ค๊ณผ Linker์์กฐํฉ๊ณผ์ ์์๋ฐ์ํ ์์๋๋ฌธ์ ์ ์ model checking๋ฑ์
๋ฐฉ์์ ํตํ์ฌ ๊ฒ์ฆํ๋ค.
4 Linker & BFC System
Sub-goals of Linkers. Bifrost๋์๋ก๋ค๋ฅธ๋ธ๋ก์ฒด์ธ์์กฐํฉํ๊ณ , DApp์๋ถ๋ฆฌ๋ component
๊ฐ ๊ฐ ๋ธ๋ก์ฒด์ธ์ ์ฅ์ ์ ํ์ฉํ๋ฉฐ ํ๋์ DApp ์ฒ๋ผ ๋์ํ๋๋ก ํ๋ค. ยง3์์ DApp์ด ๋ถ๋ฆฌ๋๊ณ
๋ณํ๋์ด์ค๋น๋๊ณ ๋์ดํ์์คํ๊ณผ์ ์์๋ DApp์์ฐ๋์ Linker๊ฐ๋ด๋นํ๋ค.์ฆ, Linker๋๋ถ๋ฆฌ
๋์ด์๋๋๊ฐ์ component๊ฐ์ ๋ณด๋ฅผ๊ณต์ ํ๊ณ ํตํฉ๋๋์์ํ ์์๋๋ก relaying proxy๋ก์จ์
์ญํ ์ ํ๋ค. ํ์ง๋ง, ๋ธ๋ก์ฒด์ธ์์ ๋์ํ๋ DApp์ ์ค๋งํธ ์ปจํธ๋ํธ ๋ชจ๋ธ์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์
์ฐ๋์ ๊ณผ์ ์์ ์ผ๋ฐ ํ๋ก๊ทธ๋จ๊ณผ ๋ค๋ฅด๊ฒ ์ ๊ทผํด์ผ ํ๋ค. ์ค๋งํธ ์ปจํธ๋ํธ๋ ๋ด๋ถ์ ์ธ ํ๋ก๊ทธ๋จ
state ์ธ์ ๋ธ๋ก์ฒด์ธ์ ์ด์ฉํ permanent storage์ native coin์ ๋ํ balance๋ฅผ ๊ฐ์ง๋ค. ๋ฐ๋ผ์
Linker์์๋์ค๋งํธ์ปจํธ๋ํธํน์ฑ๊ณผ๋ธ๋ก์ฒด์ธ์ด๊ฐ์ง๋ํน์ฑ์๊ณ ๋ คํ์ฌ์๋์๊ฐ์์ธ๋ถ๋ชฉํ๋ฅผ
๊ฐ์ง๋ค.
โข Transparent Interoperation: Recipe๋ก์์ฑ๋ DApp์๋ component๊ฐ์ถ๊ฐ์ ์ธ์ฐ๋์๋ํ
์์ ์์ด Linker๋ฅผ ํตํด์ ์ํธ์ด์ฉ๋ ์ ์๋๋ก ํ๋ค.
โข Platform-wide, Unified coin (token) System: Bifrost์์ ๋์ํ๋ DApp์ ์ํด ํ๋์
coin (๋๋ token) ์ฒด๊ณ๊ฐ ํ์ํ๋ค.
โข Relay Availability: DApp์๋ component๊ฐ๋ชจ๋๋์ํ๋๋์์๋์ํธ์ด์ฉ์์ํ์ฐ๊ฒฐ์ด
ํญ์ ์ ์ง๋์ด ์์ด์ผ ํ๋ค.
โข Adjustable Finality:๋ธ๋ก์ฒด์ธ์ consensus๋ฐฉ์๊ณผ์์คํ ํน์ฑ์๋ฐ๋ผ์์๋ก๋ค๋ฅธ finality๋ฅผ
๊ฐ์ง๊ฒ๋๋ค.์๋ฅผ๋ค์ด,์์ ์ฆ๋ช (PoW)๋ฐฉ์์๋ธ๋ก์ฒด์ธ์์คํ ์ํ๋ฅ ์ ์ธ finality๋ฅผ๊ฐ์ง์ง
17
๋ง, ์ง๋ถ์ฆ๋ช (PoS) ๋ฐฉ์ ๋ฑ์ ํตํ์ฌ ์ฆ๊ฐ์ ์ธ finality์ ๊ฐ๊น์ด ํจ๊ณผ๋ฅผ ์ป์ ์ ์๋ค. ๋ฐ๋ผ์,
Bifrost์์ ์๋ก ๋ค๋ฅธ finality๋ฅผ ๊ฐ์ง๋ ๋ธ๋ก์ฒด์ธ์ด ์กฐํฉ๋ ๊ฒฝ์ฐ์ Linker์์ ์๋ก ๋ค๋ฅธ
finality์ ๋ํ ์ ์ถฉ ๊ธฐ๋ฅ์ ์ ๊ณตํด์ผ ํ๋ค.
Interworking on Bifrost. Linker๋ ์ธ๋ถ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ํ์ฌ, DApp์ data์ control์
๋ํ ์ฐ๋ ๋ฐฉ๋ฒ๊ณผ ํจ๊ป Bifrostํ๋ซํผ ์ ์ฒด์์ ์ฌ์ฉํ ์ ์๋ ์๋ก์ด ์ฝ์ธ์ธ BFC์์คํ ์ ์ ์
ํ๋ค. ๋ํ, Linker์ ๋ ผ๋ฆฌ์ /๋ฌผ๋ฆฌ์ ๋ค์คํ๋ฅผ ํตํด์ ๊ฐ์ฉ์ฑ(availability)๋ฅผ ๋ณด์ฅํ๊ณ , DApp์ ๋ถ
๋ฆฌ๊ณผ์ ์์์์ฑ๋๋ Linker description์ finality์ต์ ์์ ๊ณตํ์ฌ์์ ์์ค์๋์๊ธฐ๋ฐ๋ธ๋ก์ฒด์ธ
ํน์ฑ์ ๋ง๋ finality๋ฅผ ์ ์ฉํ ์ ์๋๋ก ํ๋ค.
4.1 Interworking via Linkers
Bifrost์์ ๋์ํ๋ DApp์ ๊ณตํต๋ ํ๊ฒฝ์ ์ ๊ณตํ๊ธฐ ์ํ์ฌ DApp ์คํ์ ์ํ ์ฐ๋ฃ ๋๋ ๋งค
๊ฐ์ฒด๋ก ์ฌ์ฉ๋๋ ํตํฉ ํํ์ธ BFC๋ฅผ ์ ์ํ๋ค. ๊ทธ๋ฆฌ๊ณ data์ control์ ์ฐ๋์ ์ํ์ฌ Linker๊ฐ
์ํํ๋ ์์ ์ ์ ์ํ๋ค.
4.1.1 BFC Operation
BFC๋๋ธ๋ก์ฒด์ธ์์กฐํฉํ๋Bifrost์ํน์ฑ์๊ณ ๋ คํ token์ฒด๊ณ๋ก์, Bifrost์ํ๊ณ๊ตฌ์ถ์๋งค๊ฐ
์ฒด๋ก์ฌ์ฉ๋๋ค. (Bifrost์ํ๊ณ๋ ยง6์์์๊ฐ๋๋ค.) BFC๋ํผ๋ธ๋ฆญ๋ธ๋ก์ฒด์ธ์ Token System์ผ๋ก
(e.g., ERC20-compatible token) ์ด์๋๋ค. ๋ด๋ถ์ ์ผ๋ก๋ BFC๋ Bifrost์ ํ๋ผ์ด๋น ๋ธ๋ก์ฒด์ธ์
native coin์ผ๋ก ์ ํ๋์ด ๋ถ๋ฆฌ๋ DApp์ ์คํ์ด๋ ๊ฒฐ์ ์์คํ ๊ตฌ์ฑ๊ณผ ๊ฐ์ ๋ณธ์ฐ์ ์ญํ ์ ์ํ
ํ๋ค. ํผ๋ธ๋ฆญ ๋ธ๋ก์ฒด์ธ์ BFC์ ํ๋ผ์ด๋น ๋ธ๋ก์ฒด์ธ์ native coin์ผ๋ก์ ์ ํ์ Linker๊ฐ ๋ด๋นํ๋ฉฐ
์ ํ ๋น์จ์ Operator์ ์ํด์ ์ ํด์ง๋ค (ยง6.2). ๋ฐ๋ผ์ Bifrost์์ ์ด์๋๋ BFC๋ ํผ๋ธ๋ฆญ ๋ธ
๋ก์ฒด์ธ ๊ด์ ์์๋ DApp์ public component๋ค๊ณผ Linker๋ค์ ๊ฑฐ๋์์ ํ์ธํ ์ ์๋ค. Bifrost
Container ๋ด์ ํ๋ผ์ด๋น ๋ธ๋ก์ฒด์ธ ๊ด์ ์์๋ BFCํํ๊ฐ ์๋ native coin์ ํํ๋ก ๋ณด์ด๊ฒ ๋๋ค.
BFC๋ Bifrost์ DApp์ด๋ผ๋ฉด ๋๊ตฌ๋ ์ฌ์ฉํ ์ ์์ง๋ง, DApp๋ ์ค์ค๋ก ํผ๋ธ๋ฆญ ๋ธ๋ก์ฒด์ธ์
์์ ๋ง์ token ๋๋ coin ์์คํ ์ ๊ฐ์ง ์ ์๋ค. ์ด๋ฌํ DApp๋ค์ ์์ ์ public component๋ฅผ
ํตํด์ ์์ ๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ token ์์คํ ์ ๊ธฐ๋ฅ๋ ํ์ฉํ ์ ์๋ค.
4.1.2 States
Bifrost์์ Linker๊ฐ ๊ณ ๋ คํ๋ state ๋ค์ ๋ค์๊ณผ ๊ฐ๋ค.
โข Cross Variables: Permanent storage์ ์ ์ฅ๋๋ ๋ฐฉ์์ ๋ธ๋ก์ฒด์ธ ์์คํ ์ ๋ชจ๋ธ๊ณผ ๊ตฌํ๋ฐฉ์
์ ๋ฐ๋ผ ๋ค๋ฅด์ง๋ง, DApp์ ๊ฐ๋ฐํ๋ ๊ณ ์์ค ์ธ์ด์์๋ ๋ณ์๋ก ์ถ์ํ๋์ด ๋ํ๋๋ค. ๋ฐ๋ผ์
Linker์์๋ cross component ์ฌ์ด์์ ์ ์งํด์ผํ๋ storage๋ฅผ ๋ณ์๋ก ํต์ผํ์ฌ ์ทจ๊ธํ๋ค.
โข Private Native Coin Balance: (ํ๋ผ์ด๋น๋ธ๋ก์ฒด์ธ์์์ฌ์ฉ๋๋ coin์ private native coin์ผ
๋ก ์ ์ํ ๋) private coin์ ๋ํ balance๋ฅผ ์๋ฏธํ๋ค.
18
Public Blockchain
Private Blockchain
Container-wise Linker
DAppPrivate
component
DAppPublic
component
DApp-wiseLinker
S
C
Private state(variables)
Public state(variables)
Private nativecoin balance
Sโ
Cโ
B
Public nativecoin balance
BFC balance
Cโ
B
Public nativecoin balance
BFC balance
Cโ
B
Public nativecoin balance
BFC balance
๊ทธ๋ฆผ 6: DApp๊ณผ Linker์ ๋ด๋ถ state ๊ตฌ์ฑ
โข Public Native Coin Balance: ์์ ์ ์ฌํ๊ฒ ํผ๋ธ๋ฆญ ๋ธ๋ก์ฒด์ธ์์ ์ฌ์ฉ๋๋ native coin์
balance๋ฅผ ์๋ฏธํ๋ค.
โข Component Addresses: DApp component๊ฐ ์์นํ ๋ธ๋ก์ฒด์ธ ์์คํ ์์์ address ์ ๋ณด๋ฅผ
๊ด๋ฆฌํ๋ค.
โข BFC Balance: Bifrost์์์ฌ์ฉ๋๋ BFC์์ฃผ์๋ณ balance์ ๋ณด์ด๋ค. BFC๋ํผ๋ธ๋ฆญ๋ธ๋ก์ฒด
์ธ์์ ๋์ํ๊ธฐ ๋๋ฌธ์, ํผ๋ธ๋ฆญ ๋ธ๋ก์ฒด์ธ์์ ์กด์ฌํ๋ ์ฃผ์์ ๋ํ BFC์ balance๋ฅผ ์๋ฏธ
ํ๋ค.
4.1.3 Actions
Linker๋ฅผ ํตํด์ ์ฐ๋์ ํด์ผ ํ๋ action๋ค์ ๋ค์๊ณผ ๊ฐ์ ์์ ๋ค์ ํฌํจํ๋ค.
โข Cross-function Call: ํ๋์ DApp์ ์ํ์ง๋ง ์๋ก ๋ค๋ฅธ component์ ์์นํ ๋ ํจ์๊ฐ ์
๋ก๋ฅผ ํธ์ถํ๋ ๊ฒฝ์ฐ
โข Cross-status Update:ํ๋์ DApp์์ํด์๋ํ์ชฝ์ component์์๋ component๊ฐ์๋ก
๊ณต์ ํ๋ ์ํ ์ ๋ณด(cross variable)์ ๋ณ๊ฒฝํ์ฌ ๋ค๋ฅธ component์๋ update๊ฐ ํ์ํ ๊ฒฝ์ฐ
4.2 DApp-wise and Container-wise Linkers
Linker๋๊ธฐ๋ฅ์ ์ผ๋ก๋ธ๋ก์ฒด์ธ์์ฐ๊ฒฐ์๋ด๋นํ์ง๋ง,์ํํ๋์ญํ ์๋ฐ๋ผ์๊ทธ๋ฆผ 3๊ณผ 4์์์๊ฐ์ด
๋ ๊ฐ์ง ์ข ๋ฅ๋ก ๊ตฌ์ฑ๋๋ค.
โข DApp-wise Linker: DApp ๋ณ๋ก ์์ฑ๋์ด์ ํด๋น DApp์ ์ฐ๊ฒฐ์ ๋ด๋นํ๋ค. DApp์ ์ฌ๊ตฌ์ฑ
๊ณผ์ ์์ ๋ถ๋ฆฌ๋ component๋ค๊ฐ์ ์ฐ๋ ์ ๋ณด์ธ Linker description์ ๋ฐํ์ผ๋ก ์ฐ๋์ ์ง์
ํ๋ค.
19
โข Container-wise Linker:ํ๋์Container์์๋์ํ๋์ฌ๋ฌDApp-wise Linker๋ค์์ด๊ดํ๋
Linker๋ก์, DApp-wise Linker ๋ค์ ์์ฑํ๊ณ ๊ด๋ฆฌํ๋ค. ๋ํ, DApp-wise Linker ๋ค์ด DApp
public component๋ก์ transaction์๋ฐ์์ํฌ๋์ฌ์ฉํ๋ public native coin์ balance์ฌ์ถฉ
์ ๋ ๋ด๋นํ๋ค.
๊ทธ๋ฆผ 6์๋ Linker์ ์ข ๋ฅ๋ณ๋ก ์ ์ฅํด์ผ ํ๋ state ์ ๋ณด๋ค์ด ๋ํ๋์๋ค. DApp private com-
ponent๋๋ด๋ถ์ ์ผ๋ก์ฌ์ฉํ๋ variable๋ค๊ณผ private native coin balance๋ฅผ์ ์งํ๋ค. DApp public
component๋ํผ๋ธ๋ฆญ๋ธ๋ก์ฒด์ธ์์ ์ฅ๋์ด์ผํ ์ ๋ณด๋ฅผ๋ด๊ณ ์๋ variable๋ค๊ณผ public native coin์
balance๋ฅผ ์ ์งํ๋ค. ๋ํ, DApp์ด ๋ณด์ ํ๊ณ ์๋ BFC์ balance๋ ์ด DApp์ public component
์ ์ฃผ์์ ํ ๋น(assign)๋๋ค. Linker์ ๊ฒฝ์ฐ์๋ DApp์ ์ ๋ณด๋ฅผ ์ํ variable์ ๊ฐ์ง์ง ์์ง๋ง,
public native coin๊ณผ BFC๋ฅผ ์ํ balance๋ฅผ ๊ฐ์ง๋ค. DApp-wise Linker์ BFC balance๋ BFC๋ฅผ
private component์ private native coin balance๋ก ๋ณํํ๊ธฐ ์ํ์ฌ ์ฌ์ฉํ๋ค. Public native coin
balance๋ private component์์ public component๋ก์ cross function call์ ๋ฐ์์ํค๋ ๊ฒฝ์ฐ์
ํผ๋ธ๋ฆญ ๋ธ๋ก์ฒด์ธ์์ transaction์ ์์ฑํ๊ธฐ ์ํ ๋น์ฉ์ผ๋ก ์ฌ์ฉํ๋ค. Container-wise Linker๋ ์
์ฌํ๊ฒ๋์ข ๋ฅ์ balance๋ฅผ์ ์งํ๋ค. Container-wise Linker์๊ฒฝ์ฐ์๋์ง์ ์ ์ผ๋ก transaction์
ํธ์ถํ๊ธฐ ๋ณด๋ค๋ Operator์ ์ ์ฅ์์ DApp-wise Linker์ public coin balance๋ฅผ ์ผ์ ์์ค์ผ๋ก
์ ์ง์์ผ์ฃผ๋ ์ฉ๋๋ก ์ฌ์ฉ๋๋ค.
4.3 Relaying State of Cross Variables
Linker๋ state์๋ํ์ฐ๋์์ํด์ cross variable์๋ณ๊ฒฝ๋๋ด์ฉ์ด์์ชฝ์ component์์ฌ๋ฐ๋ฅด๊ฒ
๋ฐ์๋ ์ ์๋๋ก ํ๋ค. ๋ component์์ ํ๋์ cross variable์ ๋ํด ๋์ผํ(consistent) ์ ๋ณด๋ฅผ
์ ์งํ๊ธฐ ์ํ์ฌ ๋ ๋ณ์์ ๋ด์ฉ์ ๋๊ธฐํํ๊ฑฐ๋ ๋ณ์์ ์ ๊ทผ์ ํจ์ํ ํ๋ ๋๊ฐ์ง ์ ๊ทผ ๋ฐฉ๋ฒ์
์ฌ์ฉํ๋ค.
์ฒซ๋ฒ์งธ๋ฐฉ๋ฒ์ cross variable์์์ชฝ์์์น์ํค๊ณ , DApp์๋ถ๋ฆฌ๋ฐ์ฌ๊ตฌ์ฑ๊ณผ์ ์์ํด๋น๋ณ์์
๊ฐ์ ์ ์(definition)ํ๋ ํ ๋น๋ฌธ(assignment statement)์ setter ํจ์๋ก ๋์นํ๋ค. Setter ํจ์๋
ํด๋น ๋ณ์๊ฐ transient ์ํ์ ์์์ ์ค์ ํ๊ณ Linker์๊ฒ ๊ฐ์ ๋ณ๊ฒฝ์ ์๋ฆฐ๋ค. Linker๋ ์ด๋ฌํ
state ๋ณํ๊ฐ ๋ฐ์๋์์์ ํ์ธํ๊ณ ์์ชฝ component์ ์๋ฆฐ๋ค. ๋๋ฒ์งธ ๋ฐฉ๋ฒ์, cross variable์
์ฌ์ฉ ๋น๋๊ฐ ์ ์ ๊ฒฝ์ฐ์๋ Recipe์ ์์ฑ(build)๋จ๊ณ์์ ํด๋น ๋ณ์์ ๋ํ ์ฌ์ฉ์ getter/setter
๋ฐฉ์์ผ๋ก๋ณ๊ฒฝํ๋ค.์ด๋ฌํ๊ฒฝ์ฐ์๋ cross variable์ํ์ชฝ component์ local variable์ฒ๋ผ์ฌ์ฉํ
์ ์๊ณ , Linker์ state ๋๊ธฐํ๋ฅผ cross function call์ ๋ํ ๋ฌธ์ ๋ก ๋จ์ผํ ํ ์ ์๋ค. ๋ฐ๋ผ์ cross
variable์ด ํ์ชฝ component์์๋ง ์ฃผ๋ก ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ์ ์ ๋ฆฌํ๋ค.
4.4 Linker Availability
์ฐํฉ(federation)์ ํํ๋ก ๊ฐ์ ํ๋ผ์ด๋น ๋ธ๋ก์ฒด์ธ ๋คํธ์ํฌ๋ฅผ ๊ตฌ์ฑํ๊ณ ์๋ Container๋ค์ ๋ถ๋ฆฌ
๋์ด ์์ง๋ง, ๋์ผํ ๊ธฐ๋ฅ์ ํ๋ Linker๋ค์ ์กฐํฉ์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ค. ์ฆ, Container ๋ง๋ค ๋์ผํ๊ฒ
๋์ํ๋ DApp-wise Linker๋ค์ด์๋์ ์ด๋ค.ํ DApp์๋ํ DApp-wise Linker๋์ฌ๋ฌ Container
20
์์ ๋ณต์ ๋์ด ์๋ ๊ฒฝ์ฐ์๋ ๋ธ๋ก์ฒด์ธ ๋ด๋ถ์์๋ ํ๋์ ๊ณ์ ์ ํตํด์ ๋์ผํ ๋์์ ์ํํ๊ฒ
๋๋ค. ๋ฐ๋ผ์, ๋ธ๋ก์ฒด์ธ ์์คํ ๋ด์์๋ ๋จ์ผํ ์ฃผ์ฒด์ ์ํ ๋ณต์ ๋ ๋์์ผ๋ก ํํ๋๋ค. ์ด๋ฌํ
์ฌ๋ถ์ ๋์ ๋์์ ํตํ์ฌ Linker ๊ธฐ๋ฅ์ ๊ฐ์ฉ์ฑ์ ๋ณด์ฅํ๋ค.
4.5 Relaying Cross-function Calls
Linker๋ํ์ชฝ์ component์์ cross function์๋ํ์์ฒญ(call)์๋ฐ๋ํธ์ component์ํด๋นํจ
์์์ ๋ฌํ๋ค. Recipe์๋ถ๋ฆฌ๊ณผ์ ์์, Bifrost๋ cross-function call๋ค์ Linker์์๋ฆผ์๋ณด๋ด๋
stub code๋ก๋ณ๊ฒฝํ๋ค.์ด๋๋ฆฌ์๊ณผ๊ฐ์ด๋ธ๋ก์ฒด์ธ์์คํ ์์์ด๋ฒคํธ์์คํ ์๊ฐ์ง๊ณ ์๋๊ฒฝ์ฐ์๋
Linker๊ฐ ํด๋น ์ด๋ฒคํธ๋ค์ ๋ํ ๊ตฌ๋ (subscription) ํํ๋ก ์ด๋ฌํ ์์ฒญ์ ํ์ธํ ์ ์์ง๋ง, ์ด๋ฒคํธ
์์คํ ์ด ์๋ ๊ฒฝ์ฐ์๋ component ์ฃผ์์ ๋ํ ๊ด์ฐฐ์ ํตํ์ฌ ํจ์ ํธ์ถ์ ๋ฐ์์ ํ์ธํ๋ค.
๊ทธ๋ฆผ 7์ DApp-wise Linker๋ฅผ ํตํด์ ์์ชฝ์ component ์ฌ์ด์ state ๋ฐ action์ ์ ๋ฌ ๊ณผ์ ์
์๋ฅผ๋ณด์ฌ์ค๋ค. Intra-DApp call์๊ฒฝ์ฐ์๋ DApp์์ฌ๊ตฌ์ฑ๊ณผ์ ์์ํด๋นํจ์์๋ํํธ์ถ๊ณผ์ ์
Linker์ ์ ๋ฌ ๊ณผ์ ์ผ๋ก ์ฝ๋์์์์ ๋์น๊ฐ ๊ฐ๋ฅํ๋ค. ํ์ง๋ง ์ธ๋ถ DApp์์ ๋ค๋ฅธ component์
์๋ ํจ์๋ฅผ ํธ์ถํ๋ inter-DApp call์ ๊ฒฝ์ฐ์๋ ํด๋น ํจ์์ ๋์ผํ signature๋ฅผ ๊ฐ์ง๋ ํจ์๋ฅผ
๊ตฌ์ฑํ๊ณ , ํธ์ถ๋๋ ๊ฒฝ์ฐ ๋ฐ๋ก Linker์ ์ ๋ฌํ๋ค.
Bifrost์ DApp ๋ค์ ๋ค์ค component๋ก ๊ตฌ์ฑ๋๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ์คํ๊ณผ์ ์ด ๋น๋๊ธฐ์ ์ผ๋ก
(asynchronously)์ผ์ด๋๋ค๋๊ฒ์๊ฐ์ ํด์ผํ๋ค.๋ฐ๋ผ์Recipeํ๋ก๊ทธ๋จ๋ชจ๋ธ์์๋ cross function
call์ ๋ํ์ฌ finalized ๊ฒฐ๊ณผ์ ์ค์ ๋ฐ์์ ์ฒ๋ฆฌํ๋ callback ํํ์ handler๋ฅผ ์ถ๊ฐํ๋๋ก ํ๋ค.
4.6 Relaying Coins
BFC๊ฐ platform-wide coin์ผ๋ก์จ Bifrost๊ฐ๋์ํ๋์ด๋์์๋ ์ฌ์ฉ๋ ์์์ง๋ง,์ค์ DApp์
์คํ๊ณผ์ ์์๋ component์๋ง๊ฒ๋ณํ๋์ด์ผํ๋ค.ํ๋ธ๋ก์ฒด์ธ์ asset์์ธ๋ถ๋๋ค๋ฅธ์์คํ ์์ฏ
๊ฒจ์์ฌ์ฉํ๊ธฐ์ํด์,๊ธฐ์กด์๋ํ์ชฝ์ asset์ burnํ๊ฑฐ๋ lock์๊ฑฐ๋๋ฐฉ์์ผ๋ก๊ณ ์ ์ํจํ๋ค๋ฅธ
์ชฝ๋ธ๋ก์ฒด์ธ์์ asset์์ฌ์ฉํ ์์๊ฒํ๋ atomic swapํํ์๊ธฐ๋ฒ๋ค์ด์ฌ์ฉ๋์๋ค. Bifrost์
Linker๋ ๋น์ทํ ๋ฐฉ์์ผ๋ก coin์ ์ด๋ํ์ง๋ง, ์ํฉ์ ๋ ๋จ์ํ๋ค. Container operator์ ์ํด์
๊ด๋ฆฌ๋๋ DApp-wise Linker์ ์ฃผ์๋ก ์ ์กํ BFC๋ง์ด ํ๋ผ์ด๋น ๋ธ๋ก์ฒด์ธ์ native coin์ผ๋ก ์ง์
๋ณํ๋์ด, ๋ฏธ๋ฆฌ ์ง์ ๋ private component์ ์ฃผ์๋ก ์ ์ก๋๋ ํํ์ด๋ค. ๋ฐ๋ผ์ Linker์์ hashed
timelock contract ๋ฐฉ์์ ํตํด BFC๋ฅผ ํ๋ผ์ด๋น ๋ธ๋ก์ฒด์ธ์ ์์ ํ๊ฒ ์ ๋ฌํ ์ ์๋ค.
Linker๋ฅผํตํ coin์์ด๋์๊ณ ๋ คํ์ฌ, DApp์ public component์ Linker๋๋ถ๋ฆฌ๋ balance๋ฅผ
๊ฐ์ง๋ค. DApp์์ฒด์์์์ ํ๊ณ ์๋ํผ๋ธ๋ฆญ๋ธ๋ก์ฒด์ธ์ balance๋ public component์์๊ด๋ฆฌํ
๊ณ Linker์ balance๋ coin์ ํ์ ์ด๋ transaction์ ์์๋ฃ(๋๋ gas) ์ง๊ธ์ ํ์ ์ ์ธ ์ฉ๋๋ก๋ง
์ฌ์ฉํ๋ค.
21
Public Blockchain
Private Blockchain
Container-wise Linker
DApp-wiseLinker
C
Cโ
B
Cโ
B
Cโ
B
DApp-wiseLinker
Action
getter/setter
Local Var.
Cross Var.
Action
getter/setter
Cross Var.
Action (virtual)
BFC conversion
BFC transfer
Cross-variable access
Inter-DAppcall
Intra-DApp
call
๊ทธ๋ฆผ 7: DApp-wise Linker๋ฅผ ํตํ state์ action์ ์ฐ๊ฒฐ์ ์
4.7 Linker Description
Linker description์ DApp ํ๋ก๊ทธ๋จ์ด ๋ถ๋ฆฌ๋๋ ๊ณผ์ ์์ ์๋์ผ๋ก ์์ฑ๋๋ค. Linker description
์๋ DApp-wise Linker์์ ๊ด๋ฆฌ/๊ด์ฐฐํด์ผ ํ๋ cross variable๊ณผ cross function๋ค์ ๋ํ ์ ์์
signature๊ฐ๋ค์ด๊ฐ๋ค.๋ํ cross variable๊ณผ function์์ํ๋ผ finalized๋๊ณ ๋์ดํ์์คํํด์ผํ
ํจ์๋ค์ ๋ชฉ๋ก๋ ํจ๊ป ํฌํจ๋๋ค. ํนํ, ๊ฐ ๊ฒฐ๊ณผ๊ฐ ์ค์ finalized ๋์๋ค๋ ๊ฒ์ ๊ฒฐ์ ํ๊ธฐ ์ํ์ฌ
์ด๋ ํ ์กฐ๊ฑด์ด ํ์ํ์ง๋ฅผ ๋ช ์ํ ์ ์๋ค. ์๋ฅผ ๋ค์ด ์์ ์ฆ๋ช ์ ์ฌ์ฉํ๋ ๋ธ๋ก์ฒด์ธ์ ๊ฒฝ์ฐ์๋
๊ฒฐ๊ณผ๊ฐ finalized ๋์๋ค๊ณ component์๊ฒ ์๋ ค์ฃผ๊ธฐ ์ ์ ํ์ํ confirmation์ ๋ช ์ํ๋ค.
5 Container
5.1 Multiple Containers for Service Availability
Bifrost์์ ํผ๋ธ๋ฆญ ๋ธ๋ก์ฒด์ธ๊ณผ ํจ๊ป ํ๋ผ์ด๋น ๋ธ๋ก์ฒด์ธ ํ๊ฒฝ์ ๊ตฌ์ฑํ๊ธฐ ์ํด์๋ ๋ค์๊ณผ ๊ฐ์
์ ์ ๊ณ ๋ คํด์ผ ํ๋ค.
โข ํ๋ผ์ด๋น๋ธ๋ก์ฒด์ธ์์คํ ์๊ธฐ์ด์ ์ธ๊ฐ์ฉ์ฑ๊ณผ์์ ์ฑ์ํ๋ณดํ๊ธฐ์ํ์ฌ๋ค์ค์๋ ธ๋๊ตฌ์ฑ์ด
ํ์ํ๋ค.
22
โข ํ๋ผ์ด๋น๋ธ๋ก์ฒด์ธ์์คํ ์์ด์ฉํ์ฌ๋ณต์๊ธฐ๊ด์ด์ฐธ์ฌํ๋์ฐํฉ๋ธ๋ก์ฒด์ธ์๊ตฌ์ฑํ๋๊ฒฝ์ฐ์
๋, ์ฐํฉ ๋คํธ์ํฌ์ ์๊ตฌ์ฌํญ์ ์ง์ํ๊ธฐ ์ํด ๋ค์ค ๋ ธ๋๋ฅผ ์ ์ฐํ๊ฒ ์ค์ ํ ์ ์์ด์ผ ํ๋ค.
โข Linker์ ๊ฐ์ด Bifrost์์ ์ ๊ณตํ๋ ์๋น์ค ๋ํ ๊ฐ์ฉ์ฑ์ ํ๋ณด๊ฐ ์ค์ํ๋ค.
์ฐ๋ฆฌ๋ ํ๋ผ์ด๋น ๋ธ๋ก์ฒด์ธ ๋ ธ๋์ Bifrost์ ๊ธฐ๋ฅ ๋ชจ๋์ด ๋ชจ๋ ๋ค์คํ๋ฅผ ํตํด ๊ฐ์ฉ์ฑ์ ๋ณด์ฅ
ํด์ผ ํ๋ค๋ ์ ์ ์ฐฉ์ํ์ฌ Container ๊ตฌ์กฐ๋ฅผ ๊ตฌ์ถํ์๋ค. Bifrost๋ ํ๋ผ์ด๋น ๋ธ๋ก์ฒด์ธ ๋ ธ๋์
Linker์ ๊ฐ์ DApp ์ฐ๋ ๋ฐ ์ด์ฉ์ ์ํ ๊ธฐ๋ฅ๋ค์ ๋ฌถ์ด ํ๋์ Container ๋ก ๊ตฌ์ฑํ๋ค. ๊ทธ๋ฆฌ๊ณ
์๋น์ค ๊ฐ์ฉ์ฑ์ ์ํ์ฌ ํ๋์ ํ๋ผ์ด๋น ๋ธ๋ก์ฒด์ธ ๋คํธ์ํฌ์ ํฌํจ๋ Bifrost Container ๋ค์ด
๋์ผํ ์์ ์ ๋์์ ์ํํ๋ค. ๋ํ Container manager๋ฅผ ํตํ์ฌ ๊ฐ์ฉ์ฑ ํ๋ณด์ ํจ์จ์ฑ์ trade
off๋ฅผ ๊ณ ๋ คํ๋ฉฐ container์ ๋์ ๊ด๋ฆฌ๋ฅผ ํ ์ ์๋๋ก ์ง์ํ๋ค.
5.2 Container Manager
๊ทธ๋ฆผ 3์์ ๋์์๋ ๊ฒ์ฒ๋ผ ํ๋์ Container์๋ ํ๋์ ํ๋ผ์ด๋น ๋ธ๋ก์ฒด์ธ ์์คํ ์ ๋ด๋ ๊ฒ์
๊ธฐ๋ณธ์ผ๋ก ํ๊ณ ์๋ค. ์ ์ฒด ํ๋ซํผ์์ ์๋น์ค์ ์์ ์ฑ์ ๋์ด๊ฑฐ๋ ๋ ๋ฆฝ๋ ๊ณต๊ฐ์ ๋ณ๋์ ํ๋ผ์ด๋น
๋ธ๋ก์ฒด์ธ์๊ตฌ์ฑํด์ผํ๋๊ฒฝ์ฐ์๋ Container manager๋ฅผํตํ์ฌ Container๋ฅผ์ถ๊ฐ์ ์ผ๋ก์์ฑํ์ฌ
์ฌ์ฉํ ์ ์๋ค. Container manager๋ ๊ฐ Container์ ๋ํ ๋ ๋ฆฝ์ฑ๊ณผ ์๋ก๊ฐ์ ์ฐ๊ฒฐ์ฑ์ ๋ณด์ฅํ ์ฐ
ํฉ ๋ธ๋ก์ฒด์ธ ๊ตฌ์ฑ์ ์ง์ํ๋ค. ๋ํ standalone ๋ฐฉ์์ Container manager๋ฅผ ํตํด์ ์์ ํ ๋ ๋ฆฝ๋
Container๋ฅผ ๊ตฌ์ฑํ ์๋ ์๋ค.
Creation by Replication. ํ๋์ ์ฐํฉ์ ์ํ๋ ์๋ก์ด container๊ฐ ์ถ๊ฐ๋๋ ๊ฒฝ์ฐ์๋, ๋ธ๋ก
์ฒด์ธ์ ํน์ฑ์ ํ๋ผ์ด๋น ๋ธ๋ก์ฒด์ธ์ state ์ ๋ณด๋ ์๋์ ์ผ๋ก ๋ณต์ (replicate)๋๋ค. ํ์ง๋ง Bifrost
์์ ์ง์ํ๋ Linker์ availability๋ฅผ ๋ณด์ฅํ๊ธฐ ์ํ์ฌ Linker์ ํด๋นํ๋ ๊ธฐ๋ฅ๋ ๋ณต์ ํ๋ค. ์ฆ
ํ Container๊ฐ ๊ฐ์ง๊ณ ์๋ Linker description ๋ฑ์ ์ ๋ณด์ Linker์์ ์ฌ์ฉํ๋ account์ ์ ๊ทผ
์ ๋ณด๊ฐ ๋ณต์ ๋๋ค.
5.3 Operator
Operator๋ ์๋น์ค ์ ๊ณต์๋ก์ ํด๋น Container๋ฅผ DApp ์๋น์ค ์ด์์์๊ฒ ์ ๊ณตํ๋ ์ฃผ์ฒด๋ฅผ ์
๋ฏธํ๋ค. Bifrost๋ Container ๋ง๋ค์ ์์จ์ฑ์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ third-party์ Operator๊ฐ ๋จ๋
(standalone)๋๋๊ณต์ Container๋ค์์ด์ํ ์์๋ค. Operator์๋ฐ๋ผ์์๋ก๋ค๋ฅธํ๋ผ์ด๋น๋ธ๋ก
์ฒด์ธ์๊ฐ์ง๋ Container๊ฐ์์ฑ๋ ์์๊ณ ,๊ธฐ๋ฐํผ๋ธ๋ฆญ๋ธ๋ก์ฒด์ธ๊ณผ์์กฐํฉ์๋ฐ๋ผ์๋ค์ํ์๋น์ค
์กฐํฉ์ด๊ฐ๋ฅํด์ง๋ค.๋ํ, Operator๋ Container์ํน์ฑ๊ณผ๋ชฉ์ ์๋ฐ๋ผ์์์ ์์๋น์ค๊ณผ๊ธ์ ์ฑ ์
์ค์ ํ ์ ์๋ค. (Operator์ ์์ธํ ์ญํ ์ ยง6.2์์ ์ค๋ช ํ๋ค.)
23
6 Bifrost Ecosystem
6.1 Bifrost Ecosystem Overview
Bifrost์ ์๋ก์ด DApp ํ๋ซํผ์ ์ค์ ํ์ฑํํ๊ธฐ ์ํด์๋ ์ฐธ์ฌ์๋ค์ ํ๋ ฅ์ ์ํด์ ์ ์ง๋๋
์์์ ์ํ๊ณ๊ฐํ์ํ๋ค. Bifrost๋์์ ์๋ incentive๋ฐฉ๋ฒ์ํตํ์ฐธ์ฌ์๋ค๊ฐ์ decentralized
governance ๊ตฌ์กฐ๋ฅผ ํตํด์ ์ง์๊ฐ๋ฅํ ์ํ๊ณ๋ฅผ ๋ง๋ค๊ณ ์ ํ๋ค.
Bifrost์ ์ฃผ๋ ์ฐธ์ฌ์๋ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ๋ถํ ์ ์๋ค.
โข Bifrost Operator: ์ ํํ ํผ๋ธ๋ฆญ ๋ธ๋ก์ฒด์ธ ์์์ ํ๋ ๋๋ ๋ณต์์ Container๋ก ๊ตฌ์ฑ๋
ํ๋ผ์ด๋น (๋๋ ์ฐํฉ) ๋ธ๋ก์ฒด์ธ์ ์ด์ํ๋ฉฐ DApp Provider์๊ฒ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ค.
โข DApp Provider: Bifrost Operator ๋ฅผ ์ ํํ์ฌ ์์ ์ DApp์ ์ด์ํ๋ค.
์ฐ๋ฆฌ๋ Bifrost๋ฅผ ํตํด ๋ค์๊ณผ ๊ฐ์ ์ํ๊ณ๋ฅผ ๋ง๋ค๊ณ ์ ํ๋ค.
1. Bifrost Operator๋ DApp Provider์๊ฒ ํฉ๋ฆฌ์ ์ธ ์ด์์ ๋น์ฉ์ ์์ฒญํ๋ฉฐ, DApp provider
๋ ๊ทธ ๋น์ฉ์ ์ง๋ถํ๋ค.
2. Bifrost Operator๋ DApp Provider์๊ฒ ํฉ์๋ ์๋น์ค๋ฅผ ๊ณต์ ํ๊ฒ ์ ๊ณตํ๋ค.
3. Bifrost์์คํ ์ DApp Provider๊ฐ Operator๋ฅผ์ ํํ์ดํ์๋์์ ๋กญ๊ฒ์ต์ ์ Container
๋ก ์ด๋ํ ์ ์๋๋ก ์ง์ํ์ฌ, ๊ฒฝ์์ ํตํด Operator๋ค์ ์ง์์ ์ธ ๋ฐ์ ์ ์ ๋ํ๋ค.
4. Bifrost์ํ๊ณ๊ฐ ํ์ฑํ๋ ์๋ก ์ฐธ์ฌ์๋ค์ด ๊ฒฝ์ ์ฑ๊ณผ ์์คํ ์์ ์ฑ ๋ฑ์ ์ธก๋ฉด์์ ์ด๋์
๋ณผ ์ ์๋๋ก ํ๋ค.
์ด๋ฌํ์ํ๊ณ๋ฅผ์ด์ํ๊ธฐ์ํ๋งค๊ฐ์ฒด๋ก์ Bifrost์์ BFC token์๊ตฌ์ฑํ๋ค. BFC๋๋ค์ํ
๋ธ๋ก์ฒด์ธ์ ์กฐํฉ์ด ์ฌ์ฉ๋๋ Bifrost์ ํน์ง์ ๊ณ ๋ คํ์ฌ platform-wide ํ๊ฒ ์ฌ์ฉ๋ ์ ์๋ ํ ํฐ
์ด๋ค. DApp Provider์ Operator ์ฌ์ด์ ๊ฑฐ๋๋ ์ฐธ์ฌ์๋ค์ incentive ์ฒด๊ณ ๊ตฌ์ฑ์ ์ํ ๋๊ตฌ๋ก์
์ฌ์ฉ๋๋ค.
6.2 Mechanisms
Bifrost Operator๋ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ฉด์ DApp Provider์๊ฒ ์ฌ์ฉ๋ฃ๋ฅผ ๋ฐ์ ์ด์ต์ ์ป์ง๋ง, ๋
์์ ์ ๋นํ ๋น์ฉ์ ์ฒญ๊ตฌํ๊ณ ์์คํ ์ ์ถฉ์คํ๊ฒ ์ด์ํด์ผํ๋ ์ฑ ์์ ๊ฐ์ง๊ฒ ๋๋ค. ๋ฐ๋๋ก DApp
Provider๋ ์์ ์๊ฒ ํฉ๋ฆฌ์ ์ธ ๊ฐ๊ฒฉ์ ๊ฐ์ฅ ์์ง์ ์๋น์ค๋ฅผ ์ ๊ณตํด์ฃผ๋ Operator๋ฅผ ์ ํํ๊ธฐ ์ํด
๋ ธ๋ ฅํ๋ค. Bifrost์ ์ํ๊ณ์์๋ ์ด๋ฌํ ์๋ก์ ๋ชฉ์ ์ ๋ฌ์ฑํ๊ธฐ ์ํ์ฌ BFC๋ฅผ ํตํด์ ์ ๋ณด์
๋น๋์นญ์ฑ(information asymmetry)์ด ์๋ ๊ฒฝ์์์ฅ ๊ตฌ์กฐ๋ฅผ ์ด์ฉํ๋ค.
24
Main Process. Operator๋ค์ ๊ฐ๊ฒฉ๊ณผ ํน์ง์ ๋ด์ธ์ด ์๋น์ค ์กฐ๊ฑด์ ํ๋ณดํ๊ณ , DApp Provider๋
์ธ์ฌํ review ๊ณผ์ ์ ๊ฑฐ์ณ์ ์์ ์๊ฒ ๊ฐ์ฅ ์ ํฉํ Operator๋ฅผ ๊ฒฐ์ ํ๋ค. DApp์ ์ ํ ๊ฒฐ๊ณผ๋
์ฌ์ฉ๋ฃ ์ง๋ถ์ ์ํด ๊ฐ Operator์๊ฒ stakingํ๊ณ ์๋ BFC์ ์์ผ๋ก ํํ๋๋ค. ๋ํ Bifrost๋
์์ฌ์ด Operator๊ฐ์ migration์ ์ง์ํ๊ธฐ ๋๋ฌธ์, DApp Provider๋ ํด๋น Operator๊ฐ ์ ๊ณตํ๋
์๋น์ค์ ๋ณด์์ ์ด๋ ์ฑ๋ฅ์ ๊ฒฐํจ์ด ์๋ ๊ฒฝ์ฐ ์ธ์ ๋ ์ง ๋ค๋ฅธ Operator๋ฅผ ์ ํํ์ฌ ์ด๋ํ ์ ์๋ค.
๋ฐ๋ผ์, DApp Provider์ BFC staking ์ ๋ณด๋ ๊ฐ Operator์ ๋ํ ์ง์ง๋ ๋๋ ์ ๋ขฐ๋์ ์ฒ๋๋ก
์์ฉํ ์ ์๋ค. ์ฐ๋ฆฌ๋ ์ด ์ ๋ณด๋ฅผ โOperator creditโ์ด๋ผ ๋ถ๋ฅธ๋ค. BFC๋ ํผ๋ธ๋ฆญ ๋ธ๋ก์ฒด์ธ ์์์ ๋
์ํ๋ฏ๋ก, Operator credit ํํฉ์ ๋ํ ๊ฒ์ฆ๋ ์ ๋ณด๋ฅผ ํฌ๋ช ํ๊ฒ ํ์ธํ ์ ์๋ค. Bifrost๋ ์ด๋ฌํ
์ ๋ณด๋ค์ ์์ฝ๊ฒ ํ์ธํ ์ ์๋ ํด(tool)๋ค์ ํจ๊ป ์ ๊ณตํ์ฌ ์ ๋ณด์ ๋์นญ์ฑ์ ๋ณด์ฅํ๋ค.
Service Plan Publication. Bifrost Operator๋์์ ์ service plan์๊ณตํํ๋ค. Service plan
์๋ ๋ค์์ ๋ด์ฉ์ด ํฌํจ๋๋ค.
โข Operator์ ๊ธฐ๋ณธ ์ ๋ณด: ํด๋น Operator๊ฐ ์ด๋ ํ ๋ธ๋ก์ฒด์ธ์ ์กฐํฉํ ์๋น์ค๋ฅผ ์ด์ํ๊ณ ์๊ณ
์ด๋ ํ Container๋ค์์ด์ํ๊ณ ์๋์ง์๋ํ์์คํ ์ ๋ณด๋ฅผ์ ์ํ๋ค. (์ถ๊ฐ์ ์ผ๋ก์ง์ํ๋
security mechanism ์ด๋ ์ฑ๋ฅ ํฅ์์ ์ํ ์ง์ ์์คํ ๋ค๋ ํ๊ธฐํ ์ ์๋ค.)
โข Pricing Function: DApp์ ์ฌ์ฉ ๋น์ฉ์ ํจ์๋ก ํํํ๋ค. Operator์ ๋ฐ๋ผ์ DApp์ ์ฌ์ฉ
์ ๋(transaction์ ๋ณต์ก๋๋ public component์ ์ฌ์ฉ ๋น๋)์ ๋ฐ๋ผ BFC๋ฅผ ์ง๋ถํ ์๋ ์
๊ณ , ํน์ ํ ์์ BFC๋ฅผ stakingํ๊ฒ ํ ์๋ ์๋ค. ๋ฐ๋ผ์ Pricing function์ ์ ์๋ฅผ ์ํ์ฌ
DApp์ transaction์๋ณต์ก๋์๊ฐ์,์๋น์ค์ด์ฉ์์ํ DApp์ BFC staking์๋ฑ์ํ๋ผ
๋ฏธํฐํํ์ฌ ์ ๊ณตํ๊ณ , Operator๋ ์ฃผ์ด์ง ํ๋ผ๋ฏธํฐ๋ฅผ ์ฌ์ฉํ๋ pricing function์ ์ ์ํ๋ค.
โข BFC Staking per DApp: Operator๋ ์ ์์ ์ธ ์ด์์ ๋ฐฉ์งํ๊ธฐ ์ํ์ฌ ๋์ํ๋ DApp์ ์ซ
์์ ๋น๋กํ๋ ์์ BFC๋ฅผ staking ํด์ผ ํ๋ค. ์ด๋ ์ผ์ข ์ security deposit์ ์ญํ ๋ก์, ํด๋น
Operator์๊ฒ์ ์ฝ์๋ ์๋น์ค๋ฅผ ๋ฐ์ง ๋ชปํ๋ ๊ฒฝ์ฐ blame ๊ณผ์ ์ ํตํ์ฌ ์ด ๊ธ์ก์ด DApp
Provider์๊ฒ์ง๋ถ๋๋ค. DApp Provider๋ํ์ฌ Operator๊ฐ stakingํ๊ณ ์๋ BFC์์๊ณผ์ด
์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ๋ช ๊ฐ์ DApp์ด ๋์ํ๊ณ ์์ผ๋ฉฐ, ๊ฐ๋ฅํ ์๋ฆฌ(slot)๊ฐ ์ผ๋ง๋ ๋จ์๋์ง๋ฅผ
ํ์ธ ํ ์ ์๋ค.
Optimal Operator selection. Bifrost๋ด์์๋๋ชจ๋ Operator์ํํฉ์ service plan๊ณผํจ๊ป
์ ๊ณต๋๋ค. DApp Provider๊ฐ Operator๋ฅผ ์ ํํ๋ฉด service plan์์ ์๊ตฌํ๋ ์์ ์ฐ์ ์ ๋ถ์ ํ
ํ๋ก staking ํ๊ณ , pricing function์ ํตํด์ ๋น์ฉ์ด ์ค์ Operator์๊ฒ ์ง๋ถ๋๋ค. DApp Provider
๋ค์ ์ ํ์ ํด๋น Operator์ ์ผ๋ง๋ ๋ง์ ์์ BFC๊ฐ ๋ชจ์ฌ์๋์ง๋ก ํ๋ณํ ์ ์๋ค(Operator
credit). ์ฆ, Operator credit์ด ๊ฐ Operator์ ์ ๋ขฐ๋๋ฅผ ๋ณด์ฌ์ฃผ๋ voucher์ ์ญํ ์ ํ๋ค. ๋ฐ๋ผ์,
Operator๋ ์์ง์ ์๋น์ค์ ๋๊ฐ๋ก DApp์๊ฒ ๋ ๋ง์ BFC staking ์์ ์๊ตฌํจ์ผ๋ก์จ, ์ ํ์์
์ ๋ฆฌํ ์ ์ง๋ฅผ ์ฐจ์งํ ์ ์๋ค.
25
Penalty and Blame Operator๋ DApp Provider์ ํญ์ ๊ณผ์ ์ ํตํ์ฌ ์ถฉ์คํ์ง ๋ชปํ ์ด์์
๋ํ์ฌ์ฒ๋ฒ๋ฐ์์์๋ค.๊ธฐ๋ณธ์ ์ผ๋ก๋ mechanical blame๋ฐฉ๋ฒ์์ง์ํ๊ณ ์ํ๋ค. DApp Provider
๋ Operator๋ฅผ ์ ํํ๋ฉด์ ์ด๊ธฐ service plan์ ๋ฐ๋ผ ์ง์ผ์ผํ ์ฑ๋ฅ์ ํ๋ผ๋ฏธํฐ๋ฅผ service level
agreement ์ ์ํ๋ค. Operator๊ฐ ์ด๋ฅผ ์๋ฐํ๋ ๊ฒฝ์ฐ ํ DApp์ ํด๋นํ๋ staking ์์ BFC๋ฅผ
smart contract๋ฑ์ ์ด์ฉํ ์๋์ ์ธ ์ ์ฐจ๋ฅผ ํตํด์ DApp Provider์๊ฒ ์ง๋ถ๋๋๋ก ํ๋ค. ์ด๋ฌํ
๋ฐฉ์์๋ณด์์ฑ ์ผ๋ก์ Operator committee์ํฌํ์์ํ๋ฐฉ์์๊ณ ๋ คํ ์์๋ค.๋ชจ๋ Operator๋ค์
์๋์ ์ผ๋ก Operator committee์ ํ์์ด ๋๊ณ ์์ ์ Operator credit ๋งํผ์ ํฌํ๊ถ์ ๊ฐ์ง๊ฒ
๋๋ค. DApp Provider๊ฐ ์ผ์ BFC๋ฅผ ์๋นํ์ฌ Operator committee์ ํน์ Operator์ ๋ํ blame
report๋ฅผ ์ ์ํ๋ฉด ์ ํด์ง ๊ธฐ๊ฐ๋ด์ Operator committee๋ค์ด ์๋ฝ/๊ฑฐ์ ์ ํฌํ๋ฅผ ํ๋ค. Blame
report๊ฐ ์๋ฝ๋ ๊ฒฝ์ฐ์๋ ์์ ๊ฒฝ์ฐ์ ๋ง์ฐฌ๊ฐ์ง๋ก ํ DApp์ ํด๋นํ๋ staking ์์ BFC๋ฅผ ์ง๋ถ
ํ๋ค.
6.3 Bootstrapping
Bifrost์ ์ํ๊ณ๋ ์ฐธ์ฌ์๊ฐ ๋์ด๋ ์๋ก ์ ์ฒด์ ์ธ ํ๋ซํผ์ ์์ ์ฑ๊ณผ ํจ์จ์ด ๋์์ง๋ ๋คํธ์ํฌ
ํจ๊ณผ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. Container์ ์ซ์์ ์ ๊ณต๋๋ ์๋น์ค์ ์ง์ด ๋น๋กํ๋ ํจ๊ณผ๋ฅผ ๊ณ ๋ คํ๋ค๋ฉด ๋คํธ
์ํฌํจ๊ณผ๋ฟ์๋๋ผ์ง์๋๋๋ฉ์ธ๋ทํ๋กํ ์ฝ์์ข ๋ฅ๋๋ค์์ฑ์ธก๋ฉด์์๋์ํ๊ณํจ๊ณผ๋๋๋ ทํ๊ฒ
๋ํ๋๋ค.ํ์ง๋ง, DApp Provider์ Bifrost Operator์๋ก๊ฐ์๋๋ฐฉ์ด๋ฒ์ฑํ ์๋ก์์ ๋์ด์ต์
๋ณด๋ โtwo-sided marketโ์ํด๋น๋๊ธฐ๋๋ฌธ์,๋คํธ์ํฌํจ๊ณผ๋ฅผ์ ํ(trigger)ํ๊ธฐ์ํ์ด๊ธฐ์๋ ธ๋ ฅ์ด
ํ์ํ๋ค. ๋ฐ๋ผ์ Bifrost์์๋ ๋ค์๊ณผ ๊ฐ์ด ๋จ๊ณ์ ์ธ ์ ๊ทผ์ ํ๊ณ ์ ํ๋ค.
โข ์ด๊ธฐ ๋จ๊ณ์์๋ Bifrost์์ ์ฃผ์ถ์ ๋์ด DApp์ ์ํํ ์๋์ ์ง์ํ๋ Container ์ด์
์์ฃผ๋ํ๋ค: Container์ด์์๊ธฐ๋ณธ์ด๋ ์์๋ Pricing function์ง์๋ฐ์ด๊ธฐ๋ชจ๋ธ์ง์ํ๋ค.
โข Bifrost์์ ํํธ๋ ๊ด๊ณ์ ์๋ ๊ธฐ๊ด๋ค์ด Operator๋ก์ Bifrost์ Container๋ค์ ์ด์ํ
๋ค.
โข ๊ฒ์ฆ๋ third-party Operator๊ฐ์ง์ํ๋๊ฒฝ์ฐ์ด๊ธฐ์ด์์์ํ BFC๋ฅผ์ง์ํ์ฌ์ฐธ์ฌ๋ฅผ๋ ๋ ค
ํ๋ค.
โข Bifrost์ํ๊ณ๊ฐ ์ฑ์๋์ด ๊ฐ๋ฉด Operator์ ์ง์ ์ฅ๋ฒฝ์ ๋ฎ์ถฐ ๋ ๋์ Container ์๋น์ค
์ด์์ ๊ฒฝ์ ์์ฅ ์ฒด์ ๋ฅผ ์ ๋ํ๋ค.
Bifrost์ ํ ํฐ, BFC๋ ์ด๊ธฐ ์ผ์ ๋ ๋ฐํ๋๋ฉฐ, ์ดํ์ ์ฑ๊ตด์ ์กด์ฌํ์ง ์๋๋ค. Bifrost์
๋ชฉ์ ๋๋ก DApp๋ค์ด ์ ์น๋์ด ๊ทธ ์ํ๊ณ๊ฐ ์กฐ์ฑ๋๋ฉด ์ด๊ธฐ๋จ๊ณ์ Staking์ ํ์ํ BFC์ด์ธ์
Container Operator์๊ฒ ์ง๊ธ๋๋ Feeํํ์ BFC์ ๋ํ ์์๋ ์ฆ๊ฐํ๊ฒ ๋๋ค. Bifrost์ ๋ค
ํธ์ํฌ ํจ๊ณผ๋ ์ ์ฒด์ ์ธ ํ๋ซํผ์ ์์ ์ฑ๊ณผ ๋์ ์๋น์ค์ ์ ๊ณต์ ๋ณด์ฅํ๋ฉฐ ๋ํ BFC์ ๊ฐ์น๋ฅผ
๋ณด์ฅํ๋ค.
26
7 Conclusion
๋ธ๋ก์ฒด์ธ์ ์๋น์ค์ ๋ํด ๊ด์ฌ์๋ ์ฌ๋๋ค์ ํํ ์ฒซ๋ฒ์งธ ์ง๋ฌธ์ ํ์ฌ๊น์ง ๋์จ ๊ฐ์ฅ ๋์ค์ ์ธ
โKiller Appโ์ด ๋ฌด์์ด๋๋ ๊ฒ์ด๋ค. ์ด ์ง๋ฌธ์ ๋ํด ๋๊ตฌ๋ ๊ณต๊ฐํ ์ ์๋ ๋๋ต์ ํ ์ ์๋ ์๊ฐ์ด
๋ธ๋ก์ฒด์ธ ๊ธฐ์ ์ด ๋์คํ๋๋ ์๊ธฐ์ผ ๊ฒ์ด๋ค. ๋ค์ ๋งํด, ๋ธ๋ก์ฒด์ธ์ด ์ธ์์ ๋ณํ์ํฌ ์ ์๋ ์ฒซ
๊ฑธ์์ ๋์ค์ด ๊ทธ ์๋น์ค๋ฅผ ์ฒดํํ ์ ์๋ DApp์ ๋ณดํธํ์ธ ๊ฒ์ด๋ค.
Bifrost์ ํต์ฌ์ ํ์ฌ DApp์ด ์๊ณ ์๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ฃผ๊ณ ๊ทธ ์ํ๊ณ์ ํ์ค์ ์ธ ํ์ฑํ๋ฅผ
์ง์ํ๊ธฐ์ํด์๋์ํ์ฅ์ฑ์๋ํํด๊ฒฐ์ฑ ์์ ์ํ๋๊ฒ์ด๋ค.๋จ,์ฐ๋ฆฌ๋์๋ง์ํ๋กํ ์ฝ์๊ธธ์
๊ฐ์ง ์๊ณ ํ์ฌ์ ์์คํ ์ ์ด์ฉํ๋ค. ํ์ฌ ๊ฐ๋ฐ๋๊ณ ์ด์๋๊ณ ์๋ ํผ๋ธ๋ฆญ ๋ธ๋ก์ฒด์ธ๊ณผ ํ๋ผ์ด๋น ๋ธ
๋ก์ฒด์ธ์์คํ ๋ค์์ ๋ง๋ค์์ฅ์ ์๊ฐ์ง๊ณ ์๋ค.์ฐ๋ฆฌ๋ Bifrost๋ฅผํตํด์์ค์ DApp์์๋น์ค์
์ด๋ฌํ ์ฅ์ ๋ค์ ๋์์ ์ ๊ณตํ๊ณ ์ ํ๋ค. Bifrost์ ์์คํ ์ ์๋ก์ด ๋ธ๋ก์ฒด์ธ์ ๋ฑ์ฅ์ ๋ง์ถ์ด
๊ณ์ํ์ฅ๋ ์์ ์ด๋ค.์ด๋ฅผํตํด์ Bifrost์ DApp๊ฐ๋ฐ์๋ค์๊ธฐ์กด์๋น์ค์ํฐ๋ณํ์์ด์๋ก์ด
๋ธ๋ก์ฒด์ธ์ผ๋ก ์ด๋ํ๊ฑฐ๋ ํ์ํ ๊ธฐ๋ฅ๋ง์ ์ฝ๊ฒ ์ ์ฉํ ์ ์๋ค.
Bifrost๊ฐ ํ์ ์ ์ธ ์ด์ ๋ DApp์ ๊ฐ๋ฐํ๊ฒฝ์ ๊ฐ์ฅ ํฐ ๋ฌธ์ ์ธ ํ๋ซํผ ๋ฆฌ์คํฌ๋ฅผ ๊ทผ๋ณธ์ ์ผ๋ก
ํด๊ฒฐํ ์ ์๋ ๊ฐ์ฅ ํจ๊ณผ์ ์ธ ์๋ฃจ์ ์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๋ DApp์ ํ๊ณ๋ฅผ ๋ํ๋ ๊ฒฐ์ ์ ์ธ
๊ณ๊ธฐ๋ฅผ ์ ๊ณตํ ๊ฒ์ด๋ฉฐ, ๊ถ๊ทน์ ์ผ๋ก๋ ๋ธ๋ก์ฒด์ธ ๊ธฐ์ ์ด ๋์ค์ ์ฐ์ฐฉ๋ฅ ๋๋ ๊ณ๊ธฐ๋ฅผ ๋ง๋ค ๊ฒ์ด๋ค.
27