์˜จํ†จ๋กœ์ง€ ๋„คํŠธ์›Œํฌ์—์„œ WebAssembly ์Šค๋งˆํŠธ ๊ณ„์•ฝ์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ํŒŒํŠธ 1: ๋Ÿฌ์ŠคํŠธ

์˜จํ†จ๋กœ์ง€ ๋„คํŠธ์›Œํฌ์—์„œ WebAssembly ์Šค๋งˆํŠธ ๊ณ„์•ฝ์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ํŒŒํŠธ 1: ๋Ÿฌ์ŠคํŠธ

์˜จํ†จ๋กœ์ง€ Wasm ๊ธฐ์ˆ ์€ ๋ณต์žกํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ฐ€์ง„ dApp ์Šค๋งˆํŠธ ๊ณ„์•ฝ์„ ๋ธ”๋ก์ฒด์ธ์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๋น„์šฉ์„ ์ค„์—ฌ dApp ์ƒํƒœ๊ณ„๋ฅผ ํฌ๊ฒŒ ๊ฐ•ํ™”ํ•ฉ๋‹ˆ๋‹ค.

์ง€๊ธˆ ์˜จํ†จ๋กœ์ง€ Wasm Rust ๋ฐ C++ ๊ฐœ๋ฐœ์„ ๋™์‹œ์— ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. Rust ์–ธ์–ด๋Š” Wasm์„ ๋” ์ž˜ ์ง€์›ํ•˜๊ณ  ์ƒ์„ฑ๋œ ๋ฐ”์ดํŠธ์ฝ”๋“œ๊ฐ€ ๋” ๊ฐ„๋‹จํ•˜์—ฌ ๊ณ„์•ฝ ํ˜ธ์ถœ ๋น„์šฉ์„ ๋”์šฑ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ, Rust๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜จํ†จ๋กœ์ง€ ๋„คํŠธ์›Œํฌ์—์„œ ๊ณ„์•ฝ์„ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

Rust๋กœ WASM ๊ณ„์•ฝ ๊ฐœ๋ฐœ

๊ณ„์•ฝ ์ƒ์„ฑ

๋ฑƒ์ง ๋Š” Rust ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ์ข‹์€ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ๋ฐ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ ๋„๊ตฌ๋กœ, ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ์™€ ํƒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ๋” ์ž˜ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์ƒˆ ์˜จํ†จ๋กœ์ง€ Wasm ๊ณ„์•ฝ์„ ์ƒ์„ฑํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์˜จํ†จ๋กœ์ง€ ๋„คํŠธ์›Œํฌ์—์„œ WebAssembly ์Šค๋งˆํŠธ ๊ณ„์•ฝ์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ํŒŒํŠธ 1: ๋Ÿฌ์ŠคํŠธ

์ด๊ฒƒ์ด ์ƒ์„ฑํ•˜๋Š” ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ:

์˜จํ†จ๋กœ์ง€ ๋„คํŠธ์›Œํฌ์—์„œ WebAssembly ์Šค๋งˆํŠธ ๊ณ„์•ฝ์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ํŒŒํŠธ 1: ๋Ÿฌ์ŠคํŠธ

Cargo.toml ํŒŒ์ผ์€ ๊ธฐ๋ณธ ํ”„๋กœ์ ํŠธ ์ •๋ณด ๋ฐ ์ข…์† ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ •๋ณด๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ์˜ [lib] ์„น์…˜์€ crate-type = ["cdylib"]๋กœ ์„ค์ •๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. lib.rs ํŒŒ์ผ์€ ๊ณ„์•ฝ ๋…ผ๋ฆฌ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ Cargo.toml ๊ตฌ์„ฑ ํŒŒ์ผ์˜ [dependencies] ์„น์…˜์— ์ข…์†์„ฑ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜จํ†จ๋กœ์ง€ ๋„คํŠธ์›Œํฌ์—์„œ WebAssembly ์Šค๋งˆํŠธ ๊ณ„์•ฝ์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ํŒŒํŠธ 1: ๋Ÿฌ์ŠคํŠธ

์ด ์ข…์†์„ฑ์„ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ์ง๋ ฌํ™” ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๊ฐ™์€ ๋„๊ตฌ ๋ฐ ์˜จํ†จ๋กœ์ง€ ๋ธ”๋ก์ฒด์ธ๊ณผ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณ„์•ฝ ์ž…๋ ฅ ๊ธฐ๋Šฅ

๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ์—๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ณด๋Š” ๊ธฐ๋ณธ ๊ธฐ๋Šฅ๊ณผ ๊ฐ™์€ ์ž…๋ ฅ ๊ธฐ๋Šฅ์ด ์žˆ์ง€๋งŒ ๊ณ„์•ฝ์—๋Š” ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์ด ์—†์Šต๋‹ˆ๋‹ค. Rust๋ฅผ ์ด์šฉํ•˜์—ฌ Wasm ์ปจํŠธ๋ž™ํŠธ๋ฅผ ๊ฐœ๋ฐœํ•  ๋•Œ ์ปจํŠธ๋ž™ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ž…๋ ฅ ํ•จ์ˆ˜๋กœ ๊ธฐ๋ณธ invoke ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Rust์˜ ํ•จ์ˆ˜ ์ด๋ฆ„์€ Rust ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ฐ€์ƒ ๋จธ์‹ ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ”์ดํŠธ์ฝ”๋“œ๋กœ ์ปดํŒŒ์ผํ•  ๋•Œ ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ค‘๋ณต ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ณ  ๊ณ„์•ฝ์˜ ํฌ๊ธฐ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ํ˜ธ์ถœ ํ•จ์ˆ˜๋Š” #[no_mangle] ์ฃผ์„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

invoke ํ•จ์ˆ˜๋Š” ํŠธ๋žœ์žญ์…˜์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์–ด๋–ป๊ฒŒ ์–ป์Šต๋‹ˆ๊นŒ?

ontio_std ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ํŠธ๋žœ์žญ์…˜์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด runtime::input() ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ZeroCopySource๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒฐ๊ณผ ๋ฐ”์ดํŠธ ๋ฐฐ์—ด์„ ์—ญ์ง๋ ฌํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ฝ์€ ๋ฐ”์ดํŠธ์˜ ์ฒซ ๋ฒˆ์งธ ๋ฐฐ์—ด์€ ํ˜ธ์ถœ ๋ฉ”์„œ๋“œ์˜ ์ด๋ฆ„์ด๊ณ  ๊ทธ ๋’ค์— ๋ฉ”์„œ๋“œ ๋งค๊ฐœ ๋ณ€์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ปจํŠธ๋ž™ํŠธ ์‹คํ–‰ ๊ฒฐ๊ณผ๋Š” ์–ด๋–ป๊ฒŒ ๋ฐ˜ํ™˜๋˜๋‚˜์š”?

ontio_std ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ œ๊ณตํ•˜๋Š” runtime::ret ํ•จ์ˆ˜๋Š” ๋ฉ”์„œ๋“œ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์™„์„ฑ๋œ invoke ํ•จ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์˜จํ†จ๋กœ์ง€ ๋„คํŠธ์›Œํฌ์—์„œ WebAssembly ์Šค๋งˆํŠธ ๊ณ„์•ฝ์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ํŒŒํŠธ 1: ๋Ÿฌ์ŠคํŠธ

๊ณ„์•ฝ ๋ฐ์ดํ„ฐ ์ง๋ ฌํ™” ๋ฐ ์—ญ์ง๋ ฌํ™”

๊ณ„์•ฝ์„ ๊ฐœ๋ฐœํ•˜๋Š” ๊ณผ์ •์—์„œ ๊ฐœ๋ฐœ์ž๋Š” ํ•ญ์ƒ ์ง๋ ฌํ™” ๋ฐ ์—ญ์ง๋ ฌํ™”, ํŠนํžˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๊ตฌ์กฐ ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๊ตฌ์กฐ ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ์–ป๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ฝ์€ ๋ฐ”์ดํŠธ ๋ฐฐ์—ด์„ ์—ญ์ง๋ ฌํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๊ด€๋ จ๋œ ๋ฌธ์ œ์— ๋ถ€๋”ชํž™๋‹ˆ๋‹ค.

ontio_std ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ ์ง๋ ฌํ™” ๋ฐ ์—ญ์ง๋ ฌํ™”๋ฅผ ์œ„ํ•œ ๋””์ฝ”๋” ๋ฐ ์ธ์ฝ”๋” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์กฐ์ฒด์˜ ํ•„๋“œ๋Š” ๋˜ํ•œ ๋””์ฝ”๋” ๋ฐ ์ธ์ฝ”๋” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋ฏ€๋กœ ๊ตฌ์กฐ์ฒด๋ฅผ ์ง๋ ฌํ™” ๋ฐ ์—ญ์ง๋ ฌํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์œ ํ˜•์ด ์ง๋ ฌํ™”๋  ๋•Œ Sink ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Sink ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค์—๋Š” ๋ฐ”์ดํŠธ ์œ ํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์„ธํŠธ ์œ ํ˜• ํ•„๋“œ buf๊ฐ€ ์žˆ์œผ๋ฉฐ ์ง๋ ฌํ™”๋œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” buf์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

๊ณ ์ • ๊ธธ์ด ๋ฐ์ดํ„ฐ(์˜ˆ: byte, u16, u32, u64 ๋“ฑ)์˜ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๊ฐ€ ์ง์ ‘ ๋ฐ”์ดํŠธ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜๋œ ๋‹ค์Œ buf์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๊ณ ์ • ๊ธธ์ด๊ฐ€ ์•„๋‹Œ ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ ๊ธธ์ด๋ฅผ ๋จผ์ € ์ง๋ ฌํ™”ํ•œ ๋‹ค์Œ Ddata๋ฅผ ์ง๋ ฌํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: u16, u32 ๋˜๋Š” u64 ๋“ฑ์„ ํฌํ•จํ•˜์—ฌ ํฌ๊ธฐ๋ฅผ ์•Œ ์ˆ˜ ์—†๋Š” ๋ถ€ํ˜ธ ์—†๋Š” ์ •์ˆ˜).

์—ญ์ง๋ ฌํ™”๋Š” ์ •๋ฐ˜๋Œ€์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ์ง๋ ฌํ™” ๋ฐฉ๋ฒ•์— ํ•ด๋‹นํ•˜๋Š” ์—ญ์ง๋ ฌํ™” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์—ญ์ง๋ ฌํ™”์—๋Š” Source ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค์—๋Š” buf ๋ฐ pos๋ผ๋Š” ๋‘ ๊ฐœ์˜ ํ•„๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Buf๋Š” ์—ญ์ง๋ ฌํ™”ํ•  ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๊ณ  pos๋Š” ํ˜„์žฌ ์ฝ์€ ์œ„์น˜๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํŠน์ • ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ๋•Œ ๊ธธ์ด๋ฅผ ์•Œ๊ณ  ์žˆ์œผ๋ฉด ์ง์ ‘ ์ฝ์„ ์ˆ˜ ์žˆ๊ณ  ๊ธธ์ด๋ฅผ ์•Œ ์ˆ˜ ์—†๋Š” ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ ๋จผ์ € ๊ธธ์ด๋ฅผ ์ฝ์€ ๋‹ค์Œ ๋‚ด์šฉ์„ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฒด์ธ์˜ ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค ๋ฐ ์—…๋ฐ์ดํŠธ

์˜จํ†จ๋กœ์ง€-wasm-cdt-rust - ๊ฐœ๋ฐœ์ž๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฒด์ธ์—์„œ ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€, ์‚ญ์ œ, ๋ณ€๊ฒฝ ๋ฐ ์ฟผ๋ฆฌ์™€ ๊ฐ™์€ ์ž‘์—…์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ํŽธ๋ฆฌํ•œ ์ฒด์ธ์˜ ๋ฐ์ดํ„ฐ ์ž‘์—…์„ ์œ„ํ•œ ์šด์˜ ๋ฐฉ๋ฒ•์„ ์บก์Šํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค::get(ํ‚ค) - ์ฒด์ธ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ ํ‚ค๋Š” AsRef ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ตฌํ˜„์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค::put(ํ‚ค, ๊ฐ’) - ๋„คํŠธ์›Œํฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. Key๋Š” AsRef ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ตฌํ˜„์„ ์š”์ฒญํ•˜๊ณ  value๋Š” Encoder ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ตฌํ˜„์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค::์‚ญ์ œ(ํ‚ค) - ์ฒด์ธ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ ํ‚ค๋Š” AsRef ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ตฌํ˜„์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.

๊ณ„์•ฝ ํ…Œ์ŠคํŠธ

๊ณ„์•ฝ์˜ ๋ฉ”์†Œ๋“œ๊ฐ€ ๊ตฌํ˜„๋˜๋ฉด ์ฒด์ธ์˜ ๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šคํ•ด์•ผ ํ•˜๊ณ  ๊ณ„์•ฝ์˜ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ ์ ˆํ•œ ๊ฐ€์ƒ ๋จธ์‹ ์ด ํ•„์š”ํ•˜๋ฏ€๋กœ ์ผ๋ฐ˜์ ์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ๊ณ„์•ฝ์„ ์ฒด์ธ์— ๋ฐฐํฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ณ„์•ฝ์„ ๋” ์‰ฝ๊ฒŒ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋„๋ก ontio_std ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ๋ชจ์˜ ๋ชจ๋“ˆ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ชจ๋“ˆ์€ ํšŒ๋กœ์˜ ๋ฐ์ดํ„ฐ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ์ œ๊ณตํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ณ„์•ฝ์˜ ๋ฐฉ๋ฒ•์„ ๋‹จ์œ„ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์‰ฝ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์ฒด์ ์ธ ์˜ˆ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—.

๊ณ„์•ฝ ๋””๋ฒ„๊น…

console::debug(msg)๋Š” ๊ณ„์•ฝ์„ ๋””๋ฒ„๊น…ํ•˜๋Š” ๋™์•ˆ ๋””๋ฒ„๊ทธ ์ •๋ณด๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. msg ์ •๋ณด๋Š” ๋…ธ๋“œ ๋กœ๊ทธ ํŒŒ์ผ์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ์ „์ œ ์กฐ๊ฑด์€ ๋กœ์ปฌ ์˜จํ†จ๋กœ์ง€ ํ…Œ์ŠคํŠธ ๋…ธ๋“œ๊ฐ€ ์‹คํ–‰ ์ค‘์ผ ๋•Œ ๋กœ๊ทธ ํŒŒ์ผ ์ˆ˜์ค€์„ ๋””๋ฒ„๊ทธ ๋ชจ๋“œ๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

runtime::notify(msg)๋Š” ๊ณ„์•ฝ์ด ๋””๋ฒ„๊น…๋˜๋Š” ๋™์•ˆ ์ ์ ˆํ•œ ๋””๋ฒ„๊ทธ ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฉ”์„œ๋“œ๋Š” ์ฒด์ธ์— ์ž…๋ ฅ๋œ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  getSmartCodeEvent ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฒด์ธ์—์„œ ์ฟผ๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ธฐ์‚ฌ๋Š” ํŠนํžˆ OntologyRussia๋ฅผ ์œ„ํ•ด Hashrate&Shares ํŽธ์ง‘์ž๊ฐ€ ๋ฒˆ์—ญํ–ˆ์Šต๋‹ˆ๋‹ค. ํด๋ฆญ

๋‹น์‹ ์€ ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๊นŒ? ๊ธฐ์ˆ  ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๊ฐ€์ž…ํ•˜์„ธ์š”. ๋””์Šค์ฝ”๋“œ. ๋˜ํ•œ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค. ๊ฐœ๋ฐœ์ž ์„ผํ„ฐ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ, ์„ค๋ช…์„œ ๋“ฑ์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ์›น ์‚ฌ์ดํŠธ์—์„œ.

์˜จํ†จ๋กœ์ง€

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€