Version 1 - Bifrost

28
Version 1.0

Transcript of Version 1 - Bifrost

Page 1: Version 1 - Bifrost

Version 1.0

Page 2: Version 1 - Bifrost

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

Page 3: Version 1 - Bifrost

์ฐจ ๋ก€

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

Page 4: Version 1 - Bifrost

6.3 Bootstrapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

7 Conclusion 27

3

Page 5: Version 1 - Bifrost

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

Page 6: Version 1 - Bifrost

๊ฒฐ๊ตญ ๊ทธ ๋ฉ”์ธ๋„ท ํ”„๋กœํ† ์ฝœ ์‹œ์Šคํ…œ์˜ ํ™•์žฅ์„ฑ ๋ฐ ๊ฐœ๋ฐœ ๋ฐฉํ–ฅ์— ๋”ฐ๋ฅธ ์ œ์–ดํ•  ์ˆ˜ ์—†๋Š” ๋ฆฌ์Šคํฌ๋ฅผ ๊ฐ–๊ฒŒ ๋œ๋‹ค.

๋‘˜์งธ, 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

Page 7: Version 1 - Bifrost

์˜ ๋ธ”๋ก์ฒด์ธ ์‹œ์Šคํ…œ์„ ํผ๋ธ”๋ฆญ ๋˜๋Š” ํ”„๋ผ์ด๋น— ๋ธ”๋ก์ฒด์ธ ํŒŒํŠธ๋กœ ๋ฐ”๋กœ ํ™œ์šฉํ•˜๊ณ , ์กฐํ•ฉ๋œ ํ™˜๊ฒฝ ์œ„์—์„œ

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

Page 8: Version 1 - Bifrost

๋ก์ฒด์ธ์ด๋”์ ํ•ฉํ•˜๋‹ค. 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

Page 9: Version 1 - Bifrost

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

Page 10: Version 1 - Bifrost

์–ธ์–ด๋‚˜ ์ค‘๊ฐ„ ์–ธ์–ด ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜(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

Page 11: Version 1 - Bifrost

โ€ข ํ”„๋ผ์ด๋น— ๋ธ”๋ก์ฒด์ธ ์ปดํฌ๋„ŒํŠธ๋Š” ์ž์‹ ์ด ์„ค์น˜๋œ 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

Page 12: Version 1 - Bifrost

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

Page 13: Version 1 - Bifrost

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

Page 14: Version 1 - Bifrost

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

Page 15: Version 1 - Bifrost

๋”ฐ๋ผ์„œ 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

Page 16: Version 1 - Bifrost

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

Page 17: Version 1 - Bifrost

โ€ข 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

Page 18: Version 1 - Bifrost

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

Page 19: Version 1 - Bifrost

๋งŒ, ์ง€๋ถ„์ฆ๋ช…(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

Page 20: Version 1 - Bifrost

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

Page 21: Version 1 - Bifrost

โ€ข 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

Page 22: Version 1 - Bifrost

์—์„œ ๋ณต์ œ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋„ ๋ธ”๋ก์ฒด์ธ ๋‚ด๋ถ€์—์„œ๋Š” ํ•˜๋‚˜์˜ ๊ณ„์ •์„ ํ†ตํ•ด์„œ ๋™์ผํ•œ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๊ฒŒ

๋œ๋‹ค. ๋”ฐ๋ผ์„œ, ๋ธ”๋ก์ฒด์ธ ์‹œ์Šคํ…œ ๋‚ด์—์„œ๋Š” ๋‹จ์ผํ•œ ์ฃผ์ฒด์— ์˜ํ•œ ๋ณต์ œ๋œ ๋™์ž‘์œผ๋กœ ํ‘œํ˜„๋œ๋‹ค. ์ด๋Ÿฌํ•œ

์—ฌ๋ถ„์˜ ๋™์‹œ ๋™์ž‘์„ ํ†ตํ•˜์—ฌ 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

Page 23: Version 1 - Bifrost

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

Page 24: Version 1 - Bifrost

โ€ข ํ”„๋ผ์ด๋น—๋ธ”๋ก์ฒด์ธ์‹œ์Šคํ…œ์„์ด์šฉํ•˜์—ฌ๋ณต์ˆ˜๊ธฐ๊ด€์ด์ฐธ์—ฌํ•˜๋Š”์—ฐํ•ฉ๋ธ”๋ก์ฒด์ธ์„๊ตฌ์„ฑํ•˜๋Š”๊ฒฝ์šฐ์—

๋Š”, ์—ฐํ•ฉ ๋„คํŠธ์›Œํฌ์˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์ค‘ ๋…ธ๋“œ๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

โ€ข 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

Page 25: Version 1 - Bifrost

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

Page 26: Version 1 - Bifrost

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

Page 27: Version 1 - Bifrost

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

Page 28: Version 1 - Bifrost

7 Conclusion

๋ธ”๋ก์ฒด์ธ์˜ ์„œ๋น„์Šค์— ๋Œ€ํ•ด ๊ด€์‹ฌ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์˜ ํ”ํ•œ ์ฒซ๋ฒˆ์งธ ์งˆ๋ฌธ์€ ํ˜„์žฌ๊นŒ์ง€ ๋‚˜์˜จ ๊ฐ€์žฅ ๋Œ€์ค‘์ ์ธ

โ€œKiller Appโ€์ด ๋ฌด์—‡์ด๋ƒ๋Š” ๊ฒƒ์ด๋‹ค. ์ด ์งˆ๋ฌธ์— ๋Œ€ํ•ด ๋ˆ„๊ตฌ๋‚˜ ๊ณต๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€๋‹ต์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์ˆœ๊ฐ„์ด

๋ธ”๋ก์ฒด์ธ ๊ธฐ์ˆ ์ด ๋Œ€์ค‘ํ™”๋˜๋Š” ์‹œ๊ธฐ์ผ ๊ฒƒ์ด๋‹ค. ๋‹ค์‹œ ๋งํ•ด, ๋ธ”๋ก์ฒด์ธ์ด ์„ธ์ƒ์„ ๋ณ€ํ™”์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์ฒซ

๊ฑธ์Œ์€ ๋Œ€์ค‘์ด ๊ทธ ์„œ๋น„์Šค๋ฅผ ์ฒดํ—˜ํ•  ์ˆ˜ ์žˆ๋Š” DApp์˜ ๋ณดํŽธํ™”์ธ ๊ฒƒ์ด๋‹ค.

Bifrost์˜ ํ•ต์‹ฌ์€ ํ˜„์žฌ DApp์ด ์•ˆ๊ณ  ์žˆ๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์ฃผ๊ณ  ๊ทธ ์ƒํƒœ๊ณ„์˜ ํ˜„์‹ค์ ์ธ ํ™œ์„ฑํ™”๋ฅผ

์ง€์›ํ•˜๊ธฐ์œ„ํ•ด์†๋„์™€ํ™•์žฅ์„ฑ์—๋Œ€ํ•œํ•ด๊ฒฐ์ฑ…์„์ œ์‹œํ•˜๋Š”๊ฒƒ์ด๋‹ค.๋‹จ,์šฐ๋ฆฌ๋Š”์ˆ˜๋งŽ์€ํ”„๋กœํ† ์ฝœ์˜๊ธธ์„

๊ฐ€์ง€ ์•Š๊ณ  ํ˜„์žฌ์˜ ์‹œ์Šคํ…œ์„ ์ด์šฉํ•œ๋‹ค. ํ˜„์žฌ ๊ฐœ๋ฐœ๋˜๊ณ  ์šด์˜๋˜๊ณ  ์žˆ๋Š” ํผ๋ธ”๋ฆญ ๋ธ”๋ก์ฒด์ธ๊ณผ ํ”„๋ผ์ด๋น— ๋ธ”

๋ก์ฒด์ธ์‹œ์Šคํ…œ๋“ค์€์ €๋งˆ๋‹ค์˜์žฅ์ ์„๊ฐ€์ง€๊ณ ์žˆ๋‹ค.์šฐ๋ฆฌ๋Š” Bifrost๋ฅผํ†ตํ•ด์„œ์‹ค์ œ DApp์˜์„œ๋น„์Šค์—

์ด๋Ÿฌํ•œ ์žฅ์ ๋“ค์„ ๋™์‹œ์— ์ œ๊ณตํ•˜๊ณ ์ž ํ•œ๋‹ค. Bifrost์˜ ์‹œ์Šคํ…œ์€ ์ƒˆ๋กœ์šด ๋ธ”๋ก์ฒด์ธ์˜ ๋“ฑ์žฅ์— ๋งž์ถ”์–ด

๊ณ„์†ํ™•์žฅ๋ ์˜ˆ์ •์ด๋‹ค.์ด๋ฅผํ†ตํ•ด์„œ Bifrost์˜ DApp๊ฐœ๋ฐœ์ž๋“ค์€๊ธฐ์กด์„œ๋น„์Šค์˜ํฐ๋ณ€ํ™”์—†์ด์ƒˆ๋กœ์šด

๋ธ”๋ก์ฒด์ธ์œผ๋กœ ์ด๋™ํ•˜๊ฑฐ๋‚˜ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋งŒ์„ ์‰ฝ๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

Bifrost๊ฐ€ ํ˜์‹ ์ ์ธ ์ด์œ ๋Š” DApp์˜ ๊ฐœ๋ฐœํ™˜๊ฒฝ์— ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ์ธ ํ”Œ๋žซํผ ๋ฆฌ์Šคํฌ๋ฅผ ๊ทผ๋ณธ์ ์œผ๋กœ

ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํšจ๊ณผ์ ์ธ ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด๋Š” DApp์˜ ํ•œ๊ณ„๋ฅผ ๋„“ํžˆ๋Š” ๊ฒฐ์ •์ ์ธ

๊ณ„๊ธฐ๋ฅผ ์ œ๊ณตํ•  ๊ฒƒ์ด๋ฉฐ, ๊ถ๊ทน์ ์œผ๋กœ๋Š” ๋ธ”๋ก์ฒด์ธ ๊ธฐ์ˆ ์ด ๋Œ€์ค‘์— ์—ฐ์ฐฉ๋ฅ ๋˜๋Š” ๊ณ„๊ธฐ๋ฅผ ๋งŒ๋“ค ๊ฒƒ์ด๋‹ค.

27