Code for Distributor Model: LT8K-150

 

Code for Distributor Model: HDC-8K050

 

DOWNLOAD THE CONVERTED WEIGHTS

Some generous anon converted all the weights. Grab them here: https://rentry.org/LLaMA-8GB-Edition and https://rentry.org/llama-tard-v2

Huggingface implementation is available now!

gh pr checkout 21955 inside the transformers directory. You'll need to clone it first: git clone https://github.com/huggingface/transformers

llamanon here.
This guide is supposed to be understandable to the average /aicg/ user (possibly retarded). This is for Linux obviously - I don't know how to run bitsandbytes on Windows, and I don't have a Windows machine to test it on.

If you're on Windows, I recommend using Oobabooga. It now supports LLaMA with 8bit.

Why don't I recommend using oobabooga? It's terrible at memory management and according to my tests, you'll use less VRAM with meta's own inference code as opposed to ooba's.

여기 라마논.
이 가이드는 평균 /aicg/ 사용자(지체 가능성이 있음)가 이해할 수 있도록 되어 있습니다.이것은 Linux용입니다.Windows에서 비트나 바이트를 실행하는 방법을 모르기 때문에 테스트할 수 있는 Windows 머신이 없습니다.

Windows  사용하고 있는 경우는, Oobobooga 를 사용하는 것을 추천합니다.8비트로 LLaMA를 지원하게 되었습니다.

OOBabooga를 추천하는 것은 어떨까요?메모리 관리 능력이 형편없고, 제 테스트에 따르면, oba가 아닌 메타의 자체 추론 코드로 VRAM을 덜 사용하게 될 것입니다.





Download LLaMA weights

magnet:?xt=urn:btih:b8287ebfa04f879b048d4d4404108cf3e8014352&dn=LLaMA&tr=udp%3a%2f%2ftracker.opentrackr.org%3a1337%2fannounce
Get the .torrent

Please download and seed all the model weights if you can. If you want to run a single model, don't forget to download the tokenizer.model file too.

Set up Conda and create an environment for LLaMA

I hate conda too, but it's the official method recommended by meta for some reason, and I don't want to deviate.
저도 콘다는 싫지만 메타가 추천하는 공식 방법이라서 벗어나고 싶지 않아요.

Set up Conda

  1. Open a terminal and run: 
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh


2. Run

chmod +x Miniconda3-latest-Linux-x86_64.sh


3. Run 

./Miniconda3-latest-Linux-x86_64.sh

 

4. Go with the default options. When it shows you the license, hit q to continue the installation.
기본 옵션을 사용합니다.라이선스가 표시되면q설치를 계속합니다.

 

5. Refresh your shell by logging out and logging in back again.
로그아웃한 후 다시 로그인하여 셸을 새로 고칩니다
I think closing the terminal works too, but I don't remember. Try both.
터미널을 닫으면 되는 것 같은데 기억이 안 나네요.둘 다 먹어봐.

 

Create env and install dependencies (환경 및 설치 의존 관계 생성)

  1. Create an env: 환경을 만듭니다.
    conda create -n llama
  2. Activate the env: env를 활성화합니다.
    conda activate llama
  3. Install the dependencies:의존 관계를 인스톨 합니다.
    NVIDIA:
    conda install torchvision torchaudio pytorch-cuda=11.7 git -c pytorch -c nvidia
    AMD:
    pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/rocm5.2
  4. Clone the INT8 repo by tloen: INT8 repo를 tloen으로 복제합니다.
    git clone https://github.com/tloen/llama-int8 && cd llama-int8
  5. Install the requirements: 요건을 인스톨 합니다.
    pip install -r requirements.txt pip install -e .

Create a swapfile 스왑 파일 생성

Loading the weights for 13B and higher models needs considerable amount of DRAM. IIRC it takes about 50GB for 13B, and over a 100GB for 30B. You'll need a swapfile to take care of excess memory usage. This is only used for the loading process; inference is unaffected (as long as you meet the VRAM requirements). 
13B 이상 모델의 무게를 로드하려면 상당한 양의 DRAM이 필요합니다.IIRC는 13B의 경우 약 50GB, 30B의 경우 100GB 이상이 소요됩니다.과도한 메모리 사용량을 처리하려면 스왑 파일이 필요합니다.이것은 로드 프로세스에만 사용됩니다.추론은 영향을 받지 않습니다(VRAM 요건을 충족하는 한).

  1. Create a swapfile: 스왑 파일 생성:
    sudo dd if=/dev/zero of=/swapfile bs=4M count=13000 status=progressThis will create about ~50GB swapfile. Edit the count to your preference. 13000 means 4MBx13000.
    그러면 약 50GB의 스왑 파일이 생성됩니다.를 편집하다count당신의 취향에 따라.13000은 4MBx13000을 의미합니다.
  2. Mark it as swap: 스왑으로 표시
    sudo mkswap /swapfile
  3. Activate it: 활성화
    sudo swapon /swapfile

If you want to delete it, simply run sudo swapoff /swapfile and then rm /swapfile.
삭제할 경우 실행하기만 하면 됩니다.sudo swapoff /swapfile그리고 나서.rm /swapfile.

Run the models 모델 실행

I'll assume your LLaMA models are in 당신의 LLama 모델은 현재
~/Downloads/LLaMA.

  1. Open a terminal in your llama-int8 folder (the one you cloned).  터미널에서 폴더(복제된 폴더)룰 엽니다.
  2. Run: 
    python example.py --ckpt_dir ~/Downloads/LLaMA/7B --tokenizer_path ~/Downloads/LLaMA/tokenizer.model --max_batch_size=1
  3. You're done. Wait for the model to finish loading and it'll generate a prompt.
    모든 작업이 완료됩니다.모델의 로드가 완료될 때까지 기다리면 프롬프트가 생성됩니다.

Add custom prompts  커스텀 프롬프트 추가

By default, the llama-int8 repo has a short prompt baked in to example.py.
디폴트로는 lama-int8 repo에는 다음과 같은 짧은 프롬프트가 포함되어 있습니다.

  1. Open the "example.py" file in the "llama-int8" directory.
  2. Navigate to line 136. It starts with triple quotations, """.
    136행으로 이동합니다.처음에는 세 개의 인용구로 시작하지만
  3. Replace the current prompt with whatever you have in mind.
    현재 프롬프트를 원하는 프롬프트로 바꿉니다.

I'm getting shitty results!  결과가 안 좋아!

The inference code sucks for LLaMA. It only supports Temperature and Top_K. We'll have to wait until HF implements support for it (already in the works) so that it can properly show its true potential.
추론 코드가 LLama에겐 최악이야Temperature와 Top_K만 지원합니다.HF가 그 진정한 잠재력을 제대로 발휘할 수 있도록 지원(이미 진행 중)을 실시할 때까지 기다려야 합니다.

https://rentry.org/llama-tard

 

LLaMA INT8 Inference guide

DOWNLOAD THE CONVERTED WEIGHTS Some generous anon converted all the weights. Grab them here: https://rentry.org/LLaMA-8GB-Edition and https://rentry.org/llama-tard-v2 Huggingface implementation is available now! You can now convert the weights to a HF form

rentry.co

 

 

 

3. CUDA 메모리 부족 오류

그example.py파일은 다음 설정에 따라 캐시를 사전 준비합니다.

model_args: ModelArgs = ModelArgs(max_seq_len=max_seq_len, max_batch_size=max_batch_size, **params)

모델 무게(7B 모델)에 대해 14GB의 메모리를 차지하므로 2 * 2 * n_layer * max_batch_size * max_seq_len * n_heads * head_dim 바이트를 저장하는 디코딩 캐시에 16GB를 사용할 수 있습니다.

기본 파라미터의 경우 이 캐시는 7B 모델의 경우 약 17GB(2 * 2 * 32 * 32 * 1024 * 32 * 128)였습니다.

명령줄 옵션이 추가되어 있습니다.example.py디폴트를 변경했습니다.max_seq_len30GB GPU에서 디코딩이 가능한 최대 512입니다.

사용의 하드웨어에 따라서, 이러한 설정을 내려 주세요.

https://github.com/tloen/llama-int8/blob/main/FAQ.md#3

TON is an innovative blockchain that incorporates novel concepts in smart contract design. Coming a number of years after Ethereum, the builders of TON had the advantage of being able to evaluate the successes and failures of the Ethereum Virtual Machine (EVM) model. For more on this, check out six unique aspects of TON blockchain that will surprise Solidity developers.

In this article, we’ll go through a couple of the most interesting features of the TON blockchain, then we’ll go through a list of best practices for developers programming smart contracts in FunC.

Contract Sharding

When developing contracts for the EVM, you generally break up the project into several contracts for convenience. In some cases, it is possible to implement all the functionality in one contract, and even where contract splitting was necessary (for example, Liquidity Pairs in the Automated Market Maker) this did not lead to any special difficulties. Transactions are executed in their entirety: either everything works out, or everything reverts.

In TON, it is strongly recommended to avoid “unbounded data structures” and split a single logical contract into small pieces, each of which manages a small amount of data. The basic example is the implementation of TON Jettons. This is TON's version of Ethereum's ERC-20 token standard. Briefly, we have:

  1. One jetton-minter that stores total_supply, minter_address, and a couple of refs: token description (metadata) and jetton_wallet_code.
  2. And a lot of jetton-wallet, one for each owner of these jettons. Each such wallet stores only the owner's address, their balance, jetton-minter address, and a link to jetton_wallet_code.

This is necessary so that the transfer of Jettons occurs directly between wallets and does not affect any high-load addresses, which is fundamental for the parallel processing of transactions.

That is, get ready so that your contract turns into a "group of contracts", and they will actively interact with each other.

What follows from this?

Partial Execution of Transactions is Possible

A new unique property appears in the logic of your contract: partial execution of transactions.

For example, consider the message flow of a standard TON Jetton:

TON Jetton message flow

As follows from the diagram,

  1. sender sends an op::transfer message to its wallet (sender_wallet)
  2. sender_wallet reduces the token balance
  3. sender_wallet sends an op::internal_transfer message to the recipient's wallet (destination_wallet)
  4. destination_wallet increases its token balance
  5. destination_wallet sends op::transfer_notification to its owner (destination)
  6. destination_wallet returns excess gas with op::excesses message on response_destination (usually sender)

Note that if the destination_wallet was unable to process the op::internal_transfer message (an exception occurred or the gas ran out), then this part and subsequent steps will not be executed. But the first step (reducing the balance in sender_wallet) will be completed. The result is a partial execution of the transaction, an inconsistent state of the Jetton, and, in this case, the loss of money.

In the worst case scenario, all the tokens can be stolen in this way. Imagine that you first accrue bonuses to the user, and then send an op::burn message to their Jetton wallet, but you cannot guarantee that the op::burn will be processed successfully.

Tip #1: Always Draw Message Flow Diagrams

Even in a simple contract like a TON Jetton, there are already quite a few messages, senders, receivers, and pieces of data contained in messages. Now imagine how it looks when you’re developing something a little more complex, like a decentralized exchange (DEX) where the number of messages in one workflow can exceed ten.

An example message flow demonstrating the importance of visualization

At CertiK, we use the DOT language to describe and update such diagrams during the course of the audit. Our auditors find that this helps them visualize and understand the complex interactions within and between contracts.

Tip #2: Avoid Fails and Catch Bounced Messages

Using the message flow, first define the entry point. This is the message that starts the cascade of messages in your group of contracts (“consequences”). It is here that everything needs to be checked (payload, gas supply, etc.) in order to minimize the possibility of failure in subsequent stages.

If you are not sure whether it will be possible to fulfill all your plans (for example, whether the user has enough tokens to complete the deal), it means that the message flow is probably built incorrectly.

In subsequent messages (consequences), all throw_if()/throw_unless() will play the role of asserts rather than actually checking something.

Many contracts also process bounced messages just in case.

For example, in TON Jetton, if the recipient's wallet cannot accept any tokens (it depends on the logic for receiving), then the sender's wallet will process the bounced message and return the tokens to its own balance.

() on_bounce (slice in_msg_body) impure {
    in_msg_body~skip_bits(32);  ;;0xFFFFFFFF

    (int balance, slice owner_address, slice jetton_master_address, cell jetton_wallet_code) = load_data();

    int op = in_msg_body~load_op();

    throw_unless(error::unknown_op, (op == op::internal_transfer) | (op == op::burn_notification));

    int query_id = in_msg_body~load_query_id();
    int jetton_amount = in_msg_body~load_coins();

    balance += jetton_amount;
    save_data(balance, owner_address, jetton_master_address, jetton_wallet_code);
}

In general, we recommend processing bounced messages, however, they can’t be used as a means of full protection from failed message processing and incomplete execution.

It takes gas to send a bounced message and process it, and if there isn’t enough provided by the sender, then no bounced.

Secondly, TON does not provide for a chain of jumps. This means a bounced message can't be re-bounced. For example, if the second message is sent after the entry message, and the second one triggers the third one, then the entry contract will not be aware of the failure of processing the third message. Similarly, if the processing of the first sends the second and the third, then the failure of the second will not affect the processing of the third.

Tip #3: Expect a Man-in-the-Middle of the Message Flow

A message cascade can be processed over many blocks. Assume that while one message flow is running, an attacker can initiate a second one in parallel. That is, if a property was checked at the beginning (e.g. whether the user has enough tokens), do not assume that at the third stage in the same contract they will still satisfy this property.

Recommendation #4: Use a Carry-Value Pattern

It follows from the previous paragraph that messages between contracts must carry valuables.

In the same TON Jetton, this is demonstrated: sender_wallet subtracts the balance and sends it with an op::internal_transfer message to destination_wallet, and it, in turn, receives the balance with the message and adds it to its own balance (or bounces it back).

And here is an example of incorrect implementation. Why can't you find out your Jetton balance on-chain? Because such a question does not fit the pattern. By the time the response to the op::get_balance message reaches the requester, this balance could already have been spent by someone.

In this case, you can implement an alternative:

Carry-value pattern usage example

  1. master sends a message op::provide_balance to the wallet
  2. wallet zeroes its balance and sends back op::take_balance
  3. master receives the money, decides if it has enough, and either uses it (debits something in return) or sends it back to wallet
Tip #5: Return Value Instead of Rejecting

From the previous observation, it follows that your group of contracts will often receive not just a request, but a request along with a value. So you can't just refuse to execute the request (via throw_unless()), you have to send the Jettons back to the sender.

For example, a typical flow start (see TON Jetton message flow):

  1. sender sends an op::transfer message via sender_wallet to your_contract_wallet, specifying forward_ton_amount and forward_payload for your contract.
  2. sender_wallet sends an op::internal_transfer message to your_contract_wallet.
  3. your_contract_wallet sends an op::transfer_notification message to your_contract, delivering forward_ton_amount, forward_payload, and the sender_address and jetton_amount.
  4. And here in your contract in handle_transfer_notification() the flow begins.

There you need to figure out what kind of request it was, whether there is enough gas to complete it, and whether everything is correct in the payload. At this stage, you should not use throw_if()/throw_unless(), because then the Jettons will simply be lost, and the request will not be executed. It's worth using the try-catch statements available starting from FunC v0.4.0.

If something does not meet the expectations of your contract, the Jettons must be returned.

We found an example of this vulnerable implementation in a recent audit.

() handle_transfer_notification(...) impure {
...
    int jetton_amount = in_msg_body~load_coins();
    slice from_address = in_msg_body~load_msg_addr();
    slice from_jetton_address = in_msg_body~load_msg_addr();

    if (msg_value < gas_consumption) { ;; not enough gas provided
        if (equal_slices(from_jetton_address, jettonA_address)) {
            var msg = begin_cell()
                .store_uint(0x18, 6)
                .store_slice(jettonA_wallet_address)
                .store_coins(0)
                .store_uint(1, 1 + 4 + 4 + 64 + 32 + 1 + 1)
            ...
        }
    ...
}

As you can see, here the "return" is sent to jettonA_wallet_address, not sender_address. Since all decisions are made based on the analysis of in_msg_body, an attacker can forge a fake message and extract the money. Always send the return to sender_address.

If your contract accepts Jettons, it is impossible to know if it was indeed the expected Jetton that came, or just an op::transfer_notification from someone.

If your contract receives unexpected or unknown Jettons, they must also be returned.

TON Smart Contract Developer Must Control the Gas

In Solidity, gas is not much of a concern for contract developers. If the user provides too little gas, everything will be reverted as if nothing had happened (but the gas will not be returned). If they provide enough, the actual costs will automatically be calculated and deducted from their balance.

In TON, the situation is different:

  1. If there is not enough gas, the transaction will be partially executed.
  2. If there is too much gas, the excess must be returned. This is the developer’s responsibility.
  3. If a “group of contracts” exchanges messages, then control and calculation must be carried out in each message.

TON cannot automatically calculate the gas. The complete execution of the transaction with all its consequences can take a long time, and by the end, the user may not have enough toncoins in their wallet. The carry-value principle is used again here.

Tip #6: Calculate Gas and Check msg_value

According to our message flow diagram, we can estimate the cost of each handler in each of the scenarios and insert a check for the sufficiency of msg_value.

You can’t just demand with a margin, say 1 TON (the gas_limit on mainnet as of the date of writing) because this gas must be divided among the “consequences”. Let's say your contract sends three messages, then you can only send 0.33 TON to each. This means that they should “demand” less. It’s important to calculate the gas requirements of your whole contract carefully.

Things get more complicated if, during development, your code starts sending more messages. Gas requirements need to be rechecked and updated.

Tip #7: Return Gas Excesses Carefully

If excess gas is not returned to the sender, the funds will accumulate in your contracts over time. In principle, nothing terrible, this is just suboptimal practice. You can add a function for raking out excesses, but popular contracts like TON Jetton still return to the sender with the message op::excesses.

TON has a useful mechanism: SEND_MODE_CARRY_ALL_REMAINING_MESSAGE_VALUE = 64. When using this mode in send_raw_message(), the rest of the gas will be forwarded further with the message (or back) to the new recipient. It is convenient if the message flow is linear: each message handler sends only one message. But there are cases when it is not recommended to use this mechanism:

  1. If there are no other non-linear handlers in your contract. storage_fee is deducted from the balance of the contract, and not from the incoming gas. This means that over time, storage_fee can eat up the entire balance because everything that comes in has to go out.
  2. If your contract emits events, i.e. sends a message to an external address. The cost of this action is deducted from the balance of the contract, and not from msg_value.
() emit_log_simple (int event_id, int query_id) impure inline {
    var msg = begin_cell()
        .store_uint (12, 4)             ;; ext_out_msg_info$11 addr$00
        .store_uint (1, 2)              ;; addr_extern$01
        .store_uint (256, 9)            ;; len:(## 9)
        .store_uint(event_id, 256);     ;; external_address:(bits len)
        .store_uint(0, 64 + 32 + 1 + 1) ;; lt, at, init, body
        .store_query_id(query_id)
        .end_cell();
    
    send_raw_message(msg, SEND_MODE_REGULAR);
}
  1. If your contract attaches value when sending messages or uses SEND_MODE_PAY_FEES_SEPARETELY = 1. These actions deduct from the balance of the contract, which means that returning unused is "working at a loss."

In the indicated cases, a manual approximate calculation of the surplus is used:

int ton_balance_before_msg = my_ton_balance - msg_value;
int storage_fee = const::min_tons_for_storage - min(ton_balance_before_msg, const::min_tons_for_storage);
msg_value -= storage_fee + const::gas_consumption;

if(forward_ton_amount) {
    msg_value -= (forward_ton_amount + fwd_fee);
...
}

if (msg_value > 0) {    ;; there is still something to return

var msg = begin_cell()
    .store_uint(0x10, 6)
    .store_slice(response_address)
    .store_coins(msg_value)
...

Remember, if the value of the contract balance runs out, the transaction will be partially executed, and this cannot be allowed.

TON Smart Contract Developer Must Manage the Storage

A typical message handler in TON follows this approach:

() handle_something(...) impure {
    (int total_supply, <a lot of vars>) = load_data();
    ... ;; do something, change data
    save_data(total_supply, <a lot of vars>);
}

Unfortunately, we are noticing a trend: <a lot of vars> is a real enumeration of all contract data fields. For example,

(
int total_supply, int swap_fee, int min_amount, int is_stopped, int user_count, int max_user_count, 
slice admin_address, slice router_address, slice jettonA_address, slice jettonA_wallet_address, 
int jettonA_balance, int jettonA_pending_balance, slice jettonB_address, slice jettonB_wallet_address, 
int jettonB_balance, int jettonB_pending_balance, int mining_amount, int datetime_amount, int minable_time, 
int half_life, int last_index, int last_mined, cell mining_rate_cell, cell user_info_dict, cell operation_gas, 
cell content, cell lp_wallet_code
) = load_data();

This approach has a number of disadvantages.

First, if you decide to add another field, say is_paused, then you need to update the load_data()/save_data() statements throughout the contract. And this is not only labor-intensive, but it also leads to hard-to-catch errors.

In a recent CertiK audit, we noticed the developer mixed up two arguments in places, and wrote:

save_data(total_supply, min_amount, swap_fee, ...

Without an external audit performed by a team of experts, finding such a bug is very difficult. The function was rarely used, and both confused parameters usually had a value of zero. You really have to know what you’re looking for to pick up on an error like this.

Secondly, there is "namespace pollution". Let's explain what the problem is with another example from an audit. In the middle of the function, the input parameter read:

int min_amount = in_msg_body~load_coins();

That is, there was a shadowing of the storage field by a local variable, and at the end of the function, this replaced value was stored in storage. The attacker had the opportunity to overwrite the state of the contract. The situation is aggravated by the fact that FunC allows the redeclaration of variables: “This is not a declaration, but just a compile-time insurance that min_amount has type int.”

And finally, parsing the entire storage and packing it back on every call to every function increases the gas cost.

Tip #8: Use Nested Storage

We recommend the following storage organization approach:

() handle_something(...) impure {
    (slice swap_data, cell liquidity_data, cell mining_data, cell discovery_data) = load_data();
    (int total_supply, int swap_fee, int min_amount, int is_stopped) = swap_data.parse_swap_data();
    …
    swap_data = pack_swap_data(total_supply + lp_amount, swap_fee, min_amount, is_stopped);
    save_data(swap_data, liquidity_data, mining_data, discovery_data);
}

Storage consists of blocks of related data. If a parameter is used in each function, for example, is_paused, then it is provided immediately by load_data(). If a parameter group is needed only in one scenario, then it does not need to be unpacked, it will not have to be packed, and it will not clog the namespace.

If the storage structure requires changes (usually adding a new field), then much fewer edits will have to be made.

Moreover, the approach can be repeated. If there are 30 storage fields in our contract, then initially you can get four groups, and then get a couple of variables and another subgroup from the first group. The main thing is not to overdo it.

Note that since a cell can store up to 1023 bits of data and up to 4 references, you will have to split the data into different cells anyway.

Hierarchical data is one of the main features of TON, let's use it for its intended purpose.

Global variables can be used, especially at the prototyping stage, where it is not entirely obvious what will be stored in the contract.

global int var1;
global cell var2;
global slice var3;

() load_data() impure {
    var cs = get_data().begin_parse();
    var1 = cs~load_coins();
    var2 = cs~load_ref();
    var3 = cs~load_bits(512);
}

() save_data() impure {
    set_data(
        begin_cell()
            .store_coins(var1)
            .store_ref(var2)
            .store_bits(var3)
            .end_cell()
        );
}

That way, if you find out that you need another variable, you just add a new global variable and modify load_data() and save_data(). No changes throughout the contract are needed. However, since there is a limitation on the number of global variables (no more than 31), this pattern can be combined with the "nested storage" recommended above.

Global variables are also often more expensive than storing everything on the stack. This, however, depends on the number of stack permutations, so it is a good idea to prototype with globals and, when storage structure is completely clear, to switch to on stack variables with a "nested" pattern.

Tip #9: Use end_parse()

Use end_parse() wherever possible when reading data from storage and from the message payload. Since TON uses bit streams with variable data format, it’s helpful to ensure that you read as much as you write. This can save you an hour of debugging.

Tip #10: Use More Helper Functions, and Avoid Magic Numbers

This tip is not unique to FunC but it is especially relevant here. Write more wrappers, and helper functions, and declare more constants.

FunC initially has an incredible amount of magic numbers. If the developer does not make any effort to limit their usage, the result is something like this:

var msg = begin_cell()
    .store_uint(0xc4ff, 17)         ;; 0 11000100 0xff
    .store_uint(config_addr, 256)
    .store_grams(1 << 30)           ;; ~1 gram of value
    .store_uint(0, 107)
    .store_uint(0x4e565354, 32)
    .store_uint(query_id, 64)
    .store_ref(vset);
    
send_raw_message(msg.end_cell(), 1);

This is code from a real project, and it scares off newbies.

Fortunately, in recent versions of FunC, a couple of standard declarations can make the code clearer and more expressive. For example:

const int SEND_MODE_REGULAR = 0;
const int SEND_MODE_PAY_FEES_SEPARETELY = 1;
const int SEND_MODE_IGNORE_ERRORS = 2;
const int SEND_MODE_CARRY_ALL_REMAINING_MESSAGE_VALUE = 64;

builder store_msgbody_prefix_stateinit(builder b) inline {
    return b.store_uint(4 + 2 + 1, 1 + 4 + 4 + 64 + 32 + 1 + 1 + 1);
}

builder store_body_header(builder b, int op, int query_id) inline {
    return b.store_uint(op, 32).store_uint(query_id, 64);
}

() mint_tokens(slice to_address, cell jetton_wallet_code, int amount, cell master_msg) impure {
    cell state_init = calculate_jetton_wallet_state_init(to_address, my_address(), jetton_wallet_code);
    slice to_wallet_address = calculate_address_by_state_init(state_init);
    
    var msg = begin_cell()
        .store_msg_flags(BOUNCEABLE)
        .store_slice(to_wallet_address)
        .store_coins(amount)
        .store_msgbody_prefix_stateinit()
        .store_ref(state_init)
        .store_ref(master_msg);

    send_raw_message(msg.end_cell(), SEND_MODE_REGULAR);
}

We love expressive code!

Conclusion

In this article, we’ve gone through some of the unique features developers will encounter when programming smart contracts on TON using FunC. We’ve also provided 10 tips we’ve learned throughout the course of our audits that will make your experience as smooth as possible.

We’re excited to be supporting the TON ecosystem and working with the many great projects being built on this new and innovative blockchain platform.

For an audit of your smart contract code, or to consult with our team of auditors and security experts, don’t hesitate to get in touch at CertiK.com.


CertiK is a pioneer in blockchain security, leveraging best-in-class AI technology and expert manual review to protect and monitor blockchain protocols and smart contracts. Founded in 2018 by professors from Yale University and Columbia University, CertiK secures the Web3 world by applying cutting-edge innovations from academia to enterprise, enabling mission-critical applications to scale safely.

 

https://blog.ton.org/secure-smart-contract-programming-in-func

※본 리포트는 한화 드림플러스 인턴십 X 쟁글 리서치팀과의 협업으로 작성되었습니다.  

Written By: 이윤경, 조승희, 박희준

Reviewed By: KP, 포뇨

 

목차

1. 들어가며

2. 지갑이란 무엇인가?

2-1. 지갑의 개요 - 키 구조와 수탁 방식을 중심으로

2-2. 메인 지갑 분석 - 메타마스크, 팬텀, 코인베이스, 렛저를 중심으로

3. 불편함이 많은 기존지갑, 이유는 시드구문에 있다

3-1. 대표적인 진입장벽, 시드구문 생성 및 관리

3-2. 유출 시 해킹 및 탈취 위험성

4. 최근 주목되는 지갑 솔루션은 Smart Contract 지갑과 MPC 지갑

4-1. Smart Contract 지갑과 계정 추상화(Account Abstraction)

4-2. MPC 지갑의 단일 실패 지점 제거

5. 미래의 웹3 생태계를 이끌 차세대 지갑 비즈니스

5-1. 지갑 확장 솔루션

5-2. 핀테크 서비스로 본 웹3 지갑의 슈퍼앱 발전 가능성

6. 지갑 시장 활성화를 가로막는 허들은 바로 규제

6-1. 국내 지갑 관련 규제인 KYC, 트래블룰

6-2. 국내 지갑 Klip, Dosi의 규제 대응 현황

6-3. 웁살라 시큐리티 등 신흥 솔루션 제시

7. 맺으며

 

 

1. 들어가며

작년 11월, 세계 3위 거래소인 FTX가 자산 건전성 논란 끝에 파산하였다. FTX의 창업자 뱅크먼 프리드가 거래소 고객의 돈을 알라메다 리서치의 채무와 지출을 갚는 데에 사용하고, 정치인들의 기부금으로 사용하는 등 횡령한 사실이 드러났다. 이러한 사건을 계기로 가상자산 거래소에 대한 신뢰도가 급격히 낮아져 중앙화 거래소에게 화폐를 수탁하는 방식이 아닌 개인의 지갑을 사용하여 자산을 관리하는 방식이 권장되기 시작했다. 대표적인 가상자산 거래소도 이에 대해 직접적으로 언급하였는데, 1위 거래소인 바이낸스의 CEO 창펑자오(CZ)는 “셀프 커스터디는 기본적인 권리에 해당한다. 당신이 이를 제대로 챙기고 있는지 확인해 보라”라고 강조하였고, 2위 거래소인 코인베이스의 CEO 브라이언 암스트롱은 “장기적으로 가상자산은 제삼자의 신뢰에 의존하지 않는 DeFi와 셀프 커스터디 지갑으로 더 나은 시스템을 구축할 수 있다”라고 전했다. 또한, 사태 이후 바이낸스는 하드웨어 지갑 제조사인 엔그레이브에 투자한다고 밝히며 셀프 커스터디가 가능한 하드웨어 지갑이 자산을 가장 안전하게 보관하는 방법 중 하나라고 언급하였다.

그러나 거래소 수탁 방식의 대체재로 제안된 셀프 커스터디, 하드웨어 지갑도 시드구문(seed phrase)의 불편함이라는 본질적 문제로 인해 온전한 지갑 솔루션이 되지 못한다. 이런 기존 지갑의 허점을 보완할 목적으로 새로운 형태의 지갑이 계속 등장하는 것처럼, 가상자산 지갑의 대중화로 나아가기 위한 노력이 최근까지도 여러 방면에서 일어나고 있다. 그렇다면 사용자들에게 필요한 지갑의 니즈는 무엇이고, 이를 충족하기 위해 지갑은 어떤 방향으로 나아가야 할까? 본 글에서는 시드구문와 관련된 현재 지갑의 문제점을 지적하고 이에 대한 솔루션을 분석한 후, 관련 비즈니스와 규제를 살펴보고자 한다.

2. 지갑이란 무엇인가?

2-1. 지갑의 개요 - 키 구조와 수탁 방식을 중심으로

가상자산 지갑은 블록체인상의 자산을 관리하고 디앱과 상호작용할 수 있도록 돕는 인터페이스이다. 지갑을 생성할 때에는 공개키와 개인키가 함께 생성되는데, 이때 공개키는 개인키를 통해 생성되지만, 공개키를 사용해서 개인키를 유추하는 것은 절대 불가능하다는 특징을 가진다. 대부분의 지갑이 사용하는 공개키 암호화란 송신자가 전달하고자 하는 메시지를 수신자의 공개키로 암호화하면, 수신자는 이를 자신의 개인키로 복호화하여 읽는 방식이다. 또 트랜잭션 수행 시, 트랜잭션 송신자는 자신의 개인키로 서명을 하고, 트랜잭션을 수신하는 검증자들은 송신자의 공개키를 통해 서명의 유효성을 검증한다.

이러한 지갑은 크게 수탁 지갑과 비수탁 지갑으로 나뉜다. 이 두 지갑의 차이는 개인 키를 관리하는 주체인데, 수탁 지갑은 개인키를 중앙화된 거래소가 관리하여 자산 거래 시 수탁자에게 이를 요청해야 하는 방식이다. 반면, 비수탁 지갑은 제삼자의 수탁자가 아닌 자신이 직접 개인키를 관리하고 거래를 서명하는 방식이다. 그렇기 때문에 자산에 대한 통제 권한과 이에 따르는 책임을 모두 개인이 가지게 된다. 이러한 방식의 비수탁 지갑을 ‘셀프 커스터디(self custody)’라고도 부른다.

2-2. 메인 지갑 분석 - 메타마스크, 팬텀, 코인베이스, 렛저를 중심으로

기존 지갑 시장에서 독점적인 지위를 가지던 이더리움의 ‘메타마스크’와 솔라나의 ‘팬텀’ 지갑 외에 신흥강자로 떠오르는 지갑을 소개해보고자 한다. 포브스에서 올해 1월 발간한 자료에 따르면, 소프트웨어 지갑에서는 Coinbase, 하드웨어 지갑에서는 Ledger가 최고의 가상자산 지갑으로 선정되었다.

A. 소프트웨어 지갑 1위 Coinbase

기존의 오픈소스 디앱 브라우저 지갑인 Toshi를 코인베이스로 이름을 바꾸며 업데이트하였다. Coinbase Exchange와 원활하게 연결되어 구매한 자산을 즉시 전송할 수 있다. 신용/직불 카드를 사용하여 지갑 내 가상자산 구매가 가능하고, 비트코인의 경우 코인 베이스 지갑의 모바일 앱을 통해서만 지원된다. 지갑 생성 시 설정한 ‘사용자 이름’으로 거래하기 때문에 높은 익명성이 보장된다.

B. 하드웨어 지갑 1위 Ledger

렛저 지갑은 Ledger Nano S 및 Ledger Nano X 지갑의 두 가지 하드웨어 지갑을 제공한다. 그중 렛저 나노 S는 2016년 출시되어 하드웨어 지갑의 원조라고 불리며, 렛저 나노 X는 2019년 출시되어 블루투스 연결을 통해 어디서나 가상자산 자산을 관리할 수 있다.

이렇듯 많은 지갑이 블록체인에서의 가상자산 관리 및 거래에 있어 중요한 역할을 하며, 웹3 생태계 내에서 지갑의 영향력은 상당하다고 평가할 수 있다. 하지만 이러한 중요성과 영향력에도 불구하고 아직 웹2 사용자들에게 진입장벽으로 느껴지는 여러 문제점들이 존재한다.

3. 불편함이 많은 기존지갑, 이유는 시드구문에 있다

3-1. 대표적인 진입장벽, 시드구문 생성 및 관리

중앙 집중식 웹2 인터넷은 소셜미디어, 인터넷 뱅킹 계정 등을 사용할 때 사용자의 이름과 아이디, 비밀번호에 의존하는 로그인 방식을 취하고 있다. 본인이 기억하기 쉬운 간단한 영문과 숫자 구성의 비밀번호 설정은 인터넷을 처음 접한 유저들이 웹2에 빠르게 온보딩할 수 있는 계기가 되어주었다. 이와 달리 웹3 사용자들은 지갑을 생성하기 위해 영문과 숫자로 된  매우 길고 복잡한 지갑 주소를 부여받고, 무작위로 주어진 12개의 시드구문를 기억해야 한다. 이를 잊어버리거나 잘못 배치했을 때는 가상자산을 영구적으로 잃을 위험에 처한다. 이러한 어려운 지갑 생성 방식은 불편한 사용자 경험을 선사함은 물론이고 웹3로의 온보딩을 크게 지체시키는 주된 요인으로 작용했다.

가상자산 지갑의 소유권 인증 및 지갑 복구를 위해 시드구문은 반드시 필요하다. 그러나, 시드구문이 유출되면 공격자에게 곧바로 악용될 수 있다. 이 때문에 추후 사용자 자신도 다시 찾아내기 어려운 방식으로 암호를 숨긴다. 특히 카카오톡과 같은 온라인상에 저장하거나, 악성 코드 감염 가능성이 있는 PC나 모바일에 사진이나 메모를 저장하는 것은 해킹의 위험성이 더욱 크기 때문에, 대부분 시드구문을 종이에 메모하여 숨겨놓는 등 아날로그적인 방식으로 보관한다. 그러나 아날로그 방식은 ‘분실’이라는 가장 근본적인 위험에 노출되어 있다. 실제로 2022년 1월, 가상자산 시장분석 업체 체인어낼리시스에 따르면, 시중에 유통 중인 1890만 비트코인 중 약 20%인 370만 개가 보유자의 암호 분실로 방치된 상태라고 한다.

3-2. 유출 시 해킹 및 탈취 위험성

사용자 자신이 시드구문을 분실하지 않아도 악의적인 공격자로 인해 유출되는 보안 이슈도 심각한 문제이다. 안랩이 발표한 ‘2023 5대 사이버보안 위협 전망’에 따르면 ‘개인 가상 지갑을 노린 공격 심화’가 포함되어 있다. 최근 대형 가상자산 거래소나 디앱 서비스의 해킹 공격에 의해 가상 자산을 거래소에서 셀프 커스터디로 옮기는 사례가 증가하였기 때문에, 그만큼 셀프 커스터디를 공격하고자 하는 시도도 증가할 것으로 예측되고 있다.

 

출처 :   Ahnlab, [2023 전망 1부] 안랩이 예측한 5대 사이버 보안 위협

 

A. PC 및 온라인상 저장되는 시드구문의 위험성

2022년 7월, 브라우저의 암호 자동완성 기능으로 메타마스크의 시드구문까지 저장되는 취약점이 발견되었다. 구문이 저장되는 시간과 경로를 해커가 파악하여 시드구문을 탈취할 수 있다는 것이 모의해킹을 통해 입증되기도 하였다. 이와 같이 PC나 온라인상에서 관리되는 시드구문은 언제나 유출의 위험에 노출되어 있다는 것을 인지해야 한다.

B. 시드구문 입력, 트랜잭션 승인을 유도하는 피싱 사이트

시드구문의 노출을 유도하기 위해 유명 지갑을 사칭하는 피싱 사이트도 존재한다. 사용자가 가장 많은 메타마스크 역시 시드구문 입력을 유도하는 피싱사이트가 생성되어 2020년부터 운영되었다. 또, 악의적인 트랜잭션을 통해 본인의 자산에 접근할 권리를 잘못 양도하도록 유도하여, 해커가 자산을 모두 탈취할 수 있도록 만든 사례도 있었다. 2022년 7월, 스캠NFT를 활용한 머니 타이거 사건이 그 일례이다.

이처럼 수탁 기관이 아닌 개인이 지갑의 모든 권한과 책임을 가질 경우, 시드구문 관리가 복잡해지기 때문에 보안 측면에서 취약할 가능성이 높다. 그렇다면 본인의 자산에 대한 권한을 온전히 가지면서도 보안 위험에 노출될 가능성을 줄일 수 있는 방법은 없을까? 이에 대해 다음 목차에서 구체적으로 알아볼 것이다.

 

4. 최근 주목되는 지갑 솔루션은 Smart Contract 지갑과 MPC 지갑

4-1. Smart Contract 지갑과 계정 추상화

A. SC지갑의 의미와 기능

Smart Contract(SC) 지갑은 코드 실행만 가능했던 Contract Account(CA, 계약 계정)에 Externally Owned Account(EOA, 외부 소유 계정)만 할 수 있던 트랜잭션 발행과 승인 기능을 추가한 스마트 컨트랙트 지갑이다. 개인키가 아닌 코드로 작동되며 계정 추상화(Account Abstraction, AA)라는 개념을 통해 여러 기능을 지갑에 프로그래밍 할 수 있다. 스마트 컨트랙트로 다중 서명, 소셜 복구, 전송 한도 설정 등을 프로그래밍 할 수 있어 사용성과 보안성을 높였다고 평가되고 있다.

B. 이더리움 계정 톺아보기 : EOA와 CA

먼저 모든 거래 및 계약에서 중요한 역할을 수행하는 이더리움 프로토콜의 ‘계정’에 대해 언급해 보자. 이더리움의 계정에는 개인키에 의해 작동되는 EOA와 코드에 의해 작동되는 CA로, 2가지 유형이 존재한다.

EOA는 트랜잭션을 발행하고 이를 다른 EOA나 CA에 전송하는 계정이다. 계정 주소를 통제할 수 있는 개인키가 존재하며 이를 이용해 트랜잭션을 발행하고 서명(검증)을 할 수 있다. 특이한 점은 EOA에서만 트랜잭션 검증이 가능하다는 것이다. 또한 모든 트랜잭션은 EOA에 의해서 발행되며 이 트랜잭션은 이더리움 상에서 스마트 컨트랙트를 실행시킨다.

반면 CA는 스마트 컨트랙트를 블록체인에 배포할 때 생성되는 계정이다. 내장된 코드의 논리대로 작동되며, 개인키가 없기 때문에 스스로 트랜잭션을 발행하지 못하고 EOA나 다른 컨트랙트에서 데이터를 수신해야 한다. CA는 오직 수신된 데이터(명령)에 의해서 실행될 수 있는 것이 특징이다. 이 데이터에 대한 응답으로 컨트랙트를 수행(코드를 실행)한다. 또 트랜잭션 발행과 서명의 권한이 없어 다시 EOA를 통해 서명받아야 하기 때문에 수수료를 지불해야 하는 불편함이 있다. 이처럼 트랜잭션 검증과 컨트랙트 실행으로 나뉘어 설계된 이유는 트랜잭션을 보낼 때 개인키를 공개하지 않기 위함이다.

C. 두 계정을 통합한 기술, 계정 추상화(AA)

그렇다면 개인키 보관 방식은 그대로 유지하되, CA에서도 트랜잭션 서명(검증)을 가능하게 한다면 어떨까? 이걸 가능하게 한 기술이 바로’ 계정 추상화’이다. 계정 추상화(AA)는 쉽게 말해 EOA와 CA를 하나의 계정으로 합쳐서 이용할 수 있게 한 기술이라고 할 수 있다. 계정 ‘추상화’라는 말 그대로 서로 다른 두 유형의 계정을 하나의 계정으로 추상화했다고 보면  편하다. CA에서도 트랜잭션 발행과 서명이 가능하게 하여, 계정을 한 번에 관리할 수 있는 점 등 지금까지 불가능했던 다양한 기능들을 탑재해 더욱 편리하게 지갑 계정을 사용할 수 있게 되었다.

D. AA를 구현하는 기술, ERC-4337

AA를 구현하려면 현재 이더리움 프로토콜에 하드코딩 되어있는 트랜잭션의 검증 로직을 스마트 컨트랙트로 수행할 수 있도록 변경해야 한다. EIP2938 등 계정 추상화를 구현하기 위한 많은 제안들 중 ‘ERC-4337’이 채택되었다.

 

ERC-4337이란 합의 계층의 프로토콜 변경 없이 AA를 구현할 수 있는 기술로, 상위 계층의 일반 트랜잭션 멤풀의 기능과 같은 'UserOperation 멤풀'을 별도로 생성하여 사용하는 방식이다. 과정을 좀 더 살펴보자면, 우선 사용자는 실행하고자 하는 트랜잭션의 데이터를 포함하는 UserOperation을 UserOperation 멤풀로 보낸다. 번들러는 이러한 UserOperation들을 하나의 트랜잭션으로 묶어 '번들 트랜잭션'을 생성한 뒤 Entry Point Contract로 전달한다. 이후 Entry Point Contract에서는 번들 트랜잭션의 각 UserOperation을 검증하고 실행한다.

 

즉 ERC-4337의 프로세스는, 번들러가 여러 사용자 작업을 단일 트랜잭션으로 묶은 다음, 이렇게 생성된 번들 트랜잭션을 이더리움 블록에 추가하여 Entry Point을 실행시키는 것으로 요약된다. AA를 구현할 수 있는 ERC-4337의 처리과정을 그림으로 쉽게 설명하자면 다음과 같다.

 

 

이외에도 해당 방안에는 트랜잭션 실행 비용을 지불할 수 있는 페이마스터 메커니즘과 같은 규칙들이 정의되어 있다. 결과적으로 ERC-4337 기능을 사용하면 사용자는 CA와 EOA라는 두 종류의 계정을 구별할 필요가 없어 편리한 이용이 가능하다. 실제로 현재 Stackup, Candidate처럼 ERC-4337 기반의 지갑들이 속속 출시가 되었으며, 여러 스타트업들이 이에 대한 사업성을 확인하고 관련 지갑 서비스를 개발 중에 있다.

E. 개인키 관리의 새로운 솔루션, 다중 서명(Multi-sig)

AA를 활용하면 다양한 기능을 지갑에 탑재할 수 있는데, 첫 번째로 꼽히는 기능은 바로 ‘다중  서명(Multi-sig)’이다. 현재 SC 지갑은 대부분 다중 서명 방식을 채택해 트랜잭션을 승인하고 있다. 다중 서명이란 거래 승인을 위해 미리 정해진 서명 수를 요구하는 것을 의미한다. 대부분의 다중 서명은 총 N명의 서명자(개인키)가 설정되어 있을 때, 적어도 M명(M개의 개인키)은 작업 발생 전 트랜잭션에 승인하고 서명해야 하는 M-of-N 거래를 구현한다. 이를 ‘M/N 다중 서명’이라고 하며, 이때의 M 대 N의 비율을 ‘쿼럼 지수’라고 한다. 예를 들어, 3/5 다중 서명에는 5명의 서명자가 설정되어 있고 그중 3명이 작업에 동의하거나 승인해야 한다는 뜻이다. 하나의 개인키만 노출되어도 해킹 등의 외부 공격에 의해 자산을 모두 도난당할 위험이 있던 기존의 보안 방식(단일 실패 지점)과는 달리, 트랜잭션을 실행하려면 일정 수 이상의 서명을 받아야 하기 때문에 허가되지 않은 접근을 막는다. 따라서 스캠과 같은 사기 및 해킹, 의도치 않은 송금 실수 등의 가능성을 크게 줄일 수 있다. 다중 서명 방식을 채택한 SC 지갑에서는 거래 승인을 위해 본인 외의 다수의 개인키가 필요하기 때문에, 거래소가 파산하거나 서버가 해킹돼도 자산을 지킬 수 있다. 또한 개인키가 스마트 컨트랙트에 저장되어 있어 지갑 사용자가 개인키를 보관 및 관리할 필요가 없다는 점에서 개인키 분실로 인한 보안 위험으로부터 벗어나게 된다. 이러한 특징으로, 다중 서명은 기존 지갑의 문제점으로 지적되던 개인키 보관 및 보안 문제를 해결한다.

F. AA를 활용한 기능, 송금한도, 소셜복구

이외에도 송금 한도 기능과 소셜 복구 기능도 제공한다. 지갑 사용자는 해커에 의해 지갑의 자산이 도난당하는 것을 막기 위해 전송하는 자산 액수의 한도를 설정할 수 있다. 또한 ‘소셜 복구’ 기능을 이용해 시드구문 없이도 계정 복구가 가능하다. 자신이 신뢰하는 사람의 지갑 계정 또는 하드웨어에 탑재된 지갑 계정 등을 가디언(보호자)으로 설정하여, 이 보호자가 복구를 승인하면 일정 시간이 지난 후 계정을 되찾을 수 있다(Argent 지갑의 경우, 과반수 이상의 보호자 승인을 요구하며 48시간이 지난 뒤 계정 복구가 가능함). 이는 하드웨어 지갑을 포함한 셀프 커스터디의 ‘시드구문 관리 및 보관’이라는 고질적인 문제의 해답이 될 수 있다. 소셜 복구 기능 외에도 지갑을 분실했을 때는 보호자에게 ‘지갑 잠금’을 요청하여 자산을 보호하기도 한다.

그러나 SC 지갑의 가장 큰 단점은 바로 ‘비싼 가스비’다. 스마트 컨트랙트는 온체인 상에 일일이 배포되어야 하며 이를 체인에 올리기 위해서는 가스비를 지불해야 한다. 컨트랙트를 생성하여 체인에 보관하고 실행하기 위해서는 아주 간단한 스마트 컨트랙트라도 500달러 이상 들 수 있다. 복잡한 스마트 컨트랙트를 실행할수록 EVM에서 더 복잡한 계산을 유도하고, 더 많은 가스비가 들기 때문에 높은 비용을 지불해야 한다는 단점이 있다.

G. SC사례, Safe 지갑과 Argent 지갑

Safe는 이더리움에서 가장 신뢰받는 디지털 자산관리 플랫폼이자 SC 지갑으로 웹, 브라우저, 모바일 중 사용자가 원하는 방식으로 앱 다운이 가능하다. DAO와 데스크톱 유저를 타겟으로 하며 이더리움, 폴리곤, 아발란체, 바이낸스 등의 주요 메인넷을 비롯한 모든 EVM 체인에서 지원되고 있다. 현재 23년 2월 기준 이더리움에 생성되어 있는 Safe 계정 수는 124,657개이다.  기존 SC 지갑은 비싼 가스비가 큰 단점이었지만 Safe는 유저에게 가스비를 되돌려주기 때문에 컨트랙트에 대한 수수료가 없다는 장점이 있다. 또 다중 서명의 특징을 가져 보안성 면에서도 우수하다. 현재 이더리움 전체 트랜잭션의 ~0.02%, 이더리움 가스비의 ~0.04%를 차지하며 이더리움 블록의 1~3%가량 존재한다.

Argent는 다중 서명 보안 및 소셜 복구 기능을 갖춘 SC 지갑으로 가상자산과 NFT를 보관할 수 있다. ETH, DAI, BAT, USDC 외 240개 이상의 토큰을 지원하며, iOS 및 안드로이드 스마트폰에 모바일 앱을 다운로드하여 사용할 수 있다. 일반 개인 유저와 모바일 유저, StarkNet의 ArgentX 유저를 타겟으로 하며 L1에서는 이더리움, L2에서는 zkSync와 StarkNET에서 지원되고 있다. 현재 23년 2월 기준 이더리움에 생성되어 있는 Argent 계정 수는 75,879개이다. 그리고 zkSync의 레이어 2 네트워크를 사용해 이더리움보다 훨씬 저렴한 수수료로 거의 즉각적인 거래가 가능하다. 또한 소셜 복구 기능을 통해 가디언의 승인을 받아 계정을 복구시킬 수 있기 때문에 시드구문이 필요 없고 다중 서명뿐만 아니라 생체 인식을 통해서도 지갑을 보호할 수 있다.

4-2. MPC 지갑의 단일 실패 지점 제거

A. MPC는 문제점을 어떻게 해결하는가?

MPC는 EOA 지갑과 구분되는 별개의 개념이 아닌, 기존 지갑에 적용되는 보안 기술이다. 이는 Multi Party Computation의 약어로, 자신이 가지고 있는 값은 노출시키지 않은 채로, 다수의 구성원과 데이터를 공유하여 하나의 결과 값을 연산하는 다자간 연산 기술을 말한다. 블록체인 산업에서는 다자간 서명 기술이라고도 하는데, 트랜잭션을 서명할 때 필요로 하는 개인키 하나를 다수가 부분적으로 나누어 보관한다. 서명이 필요할 경우 키를 보관하는 N명 중 지정된 비율에 따라 M명 이상이 응해야 트랜잭션을 실행할 수 있도록 설계되었다.

 

 

이렇게 키를 나눠서 보관하는 이유는 단일 실패 지점(Single Point of Failure)을 제거함으로써 보안을 강화시킬 수 있기 때문이다. 메타마스크 등 기존의 셀프 커스터디는 앞서 지적했듯이, 개인키가 유출되면 수많은 해킹 위험에 노출되고 지갑의 모든 통제권이 탈취된다는 점에 있어 단일 실패 지점을 가진다. 그러나 다수가 하나의 키를 나누어 보관하게 될 경우, 한 명의 데이터가 유출되어도 다른 사람의 데이터를 모두 알지 않는 한 자산 탈취가 불가능하기 때문에 단일 실패 지점이 제거되며 개인키 유출 및 해킹 문제를 해결할 수 있다.

 

MPC 기술이 적용되는 구체적인 방식은 다음과 같다. 사용자가 자신의 지갑에서 거래 가능 화이트리스트를 지정해 놓았을 때, 지갑의 개인키가 유출되고 공격자가 화이트리스트에 없는 주소로 인출을 시도한다고 가정하자. 일반 개인 지갑의 경우 모든 자산이 공격자로 인해 순식간에 탈취당하겠지만, MPC의 경우 공격자는 유출된 해당 키를 사용하더라도 부분적인 서명만 하게 된다. 네트워크 내의 다른 노드들은 해당 트랜잭션을 전달받아 오프체인 정책을 확인한 후, 해당 주소가 화이트리스트에 없다는 것을 깨닫고 자신이 가진 나머지 부분의 키를 제공하지 않는다. 이로써 서명은 완성되지 못하고 악의적인 트랜잭션은 실패하게 된다.

 

MPC 솔루션은 나누어진 개인 키를 하나의 온전한 키로 완성하기 위한 함수를 오프체인 상에서 실행한다. 오프체인을 사용함으로써 여러 장점이 발생하는데, 우선 데이터를 온체인에서 다루지 않는 만큼 프라이빗한 서명 체계를 가지게 된다. 또 특정한 체인이나 VM을 겨냥하여 설계되지 않기 때문에 여러 블록체인과의 호환성이 좋으며, 가스비를 발생시키지 않기 때문에 비교적 저렴하다. 이처럼 다양한 측면에서 개인키 보관 문제를 해결하며 높은 보완성을 자랑하는 MPC 기술은 가상자산을 수탁하여 관리하는 Fireblocks, Coinbase 등의 기관에서 오랫동안 보안 솔루션으로 채택되고 있다.

B. MPC Provider 사례, Fireblocks, Coinbase

Fireblocks은 가상 자산 인프라를 제공하는 기업으로, 은행과 핀테크 스타트업, 기타 금융기관을 대상으로 한다. 이들은 MPC 기술과 하드웨어 기술을 결합하여 보안성과 SLAs(Service Level Agreements)는 최대화시킴과 동시에 트랜잭션 비용은 최소화한 기업용 지갑을 제공한다. Fireblocks는 MPC-CMP라는 새로운 알고리즘을 개발하기도 하였는데, 이는 MPC 알고리즘 중 트랜잭션 서명 시간이 가장 빠르다는 특징을 가진다. 최근에는 MPC 기반의 스테이킹 기능을 추가하며 1500개의 고객 중 약 400개가 디파이 목적으로 Fireblocks 서비스를 선택하였고, 2022년 6월 기준 ARR(연간반복매출)이 1억 달러를 넘으며 현재 지갑 분야에서 상승세를 달리고 있다.

 

Coinbase 지갑은 Fireblocks와 달리 기관보다 거래소를 이용하는 유저들을 대상으로 한다. 일반적인 디앱에서는 소프트웨어 지갑을 사용하는 반면, 중앙화 거래소는 오프라인상에서 지갑을 관리한다. 따라서 MPC 도입 전까지는 디앱을 사용하려면 거래소의 오프라인에 보관되어 있는 자산을 셀프 커스터디를 통해 온라인으로 이동시켜야 했다. 그러나 Coinbase는 MPC 기술을 사용하면서 이러한 번거로움을 해소하였다. 이들이 제공하는 MPC 기술 기반 반수탁 지갑은 유저의 개인키를 유저와 Coinbase가 각각 일부를 나누어서 저장한다. 따라서 해킹 위험이 사라짐에 따라 온라인상에서도 자산을 보관할 수 있기 때문에, 셀프 커스터디를 거치지 않아도 거래소의 반수탁 지갑 내 자산을 곧바로 디앱에서 사용할 수 있다. 이로써 Coinbase의 반수탁 지갑은 보안성을 강화함과 동시에 고객의 시간과 가스비를 절약함으로써 디앱의 접근성을 높여준다는 의의를 가진다.

 

위의 두 사례처럼 중앙화된 기관이 오프체인에서 데이터베이스로 키를 보관하는 것 외에도, 탈중앙화되어 키를 관리하는 기관도 있다. 대표적으로 Lit Protocol, Entropy, Odsy 등이 있는데, 이러한 경우에는 기관이 아닌 네트워크 위의 여러 노드들이 키를 나눠서 보관한다.

 

 

 

이렇듯 MPC와 SC는 늘 비교선상에 세워지지만 사실 두 기술은 서로 다른 부분을 해결하고 있다. MPC는 키를 분산하여 보관하고 서명 시 공유하여 합치는 과정을 블록체인 밖에서 처리하는 오프체인 솔루션인 반면, SC는 블록체인 상의 스마트 컨트랙트 코드를 통해 키 관리를 자동화하는 온체인 방식의 솔루션이다. 두 기술은 오프체인과 온체인이라는 뚜렷하게 반대되는 지점에 놓여있기 때문에, 서로 대조되기보다는 오히려 상호보완적 관계이다. 따라서 이는 두 기술의 장점을 모두 갖출 수 있는 SC와 MPC의 혼합 솔루션으로 이어질 수 있다. MPC는 더 보안성이 강화된 개인 키 관리를 제공할 수 있고, 동시에 SC 기술을 사용하여 확장성을 추구할 수 있게 된다. 현재까지는 최근에 대두된 분야인 만큼 기술적인 한계 때문에 결합되지 않고 있지만, 시간이 흘러 기술적인 조건이 충족된다면 두 기술은 상호보완적으로 결합되어 시너지를 발생시킬 수 있을 것이다.

5. 미래의 웹3 생태계를 이끌 차세대 지갑 비즈니스

기존 지갑 비즈니스 모델은 가상자산 보관 및 관리에 그쳤지만, 가까운 미래에는 신생 기술을 활용한 다양한 사업으로 변모할 것으로 보인다. 이번 목차에선 지갑의 새로운 비즈니스를 제시하고, 지갑에서 확장된 비즈니스와 핀테크 서비스에서 착안한 지갑의 슈퍼앱 가능성에 대해 고찰해보고자 한다.

5-1. 지갑 확장 비즈니스

A. 자유로운 수수료 결제 수단 및 자동결제 시스템 활성화

AA를 활용하면 더욱 편리한 수수료 지불 서비스를 구현할 수 있다. 이더리움의 ERC-4337에서는 Entry Point Contract로 해당 플랫폼 또는 프로젝트가 사용자 대신 가스비를 지불하는 Paymaster기능을 지원한다. 현재 이더리움 수수료가 타 체인에 비해 높은 편이기 때문에 이 같은 기능의 도입은 사용자 경험을 일정 부분 개선할 수 있다. 또한 토큰의 종류에 상관없이 수수료를 지불할 수 있다. 이더리움과 타 블록체인들의 공통점은 지정된 자체 토큰으로 가스비 지불을 요구한다는 것이다. 즉, 소유하고 있는 토큰을 해당 토큰으로 스왑 하는 과정에서도 수수료가 발생하며, 사용자가 추가적으로 지불해야 하는 비용의 증가를 초래한다. 그러나 AA를 사용하면 지정된 토큰이 아닌 ERC-20 토큰이나 사용자 본인이 원하는 토큰으로 가스비를 낼 수 있다. 만약 신용카드로 거래 수수료를 지불하는 기존의 지갑 서비스와 접목된다면 토큰뿐 아니라 실물 신용/직불카드로 가스비를 낼 수 있을지도 모른다. 이처럼 토큰이나 지갑의 뚜렷한 부각 없이 가스비를 지불할 수 있는 시스템의 출현으로 Seamless 한 지갑 서비스가 가능해질 것이다.

AA를 사용하면 사용자의 가상자산 지갑에서 전기요금이나 전화요금을 내는 자동결제 시스템도 가능해진다. 이 자동결제 시스템이 갖춰지면 현재 우리가 모바일 뱅킹에서 쉽게 하고 있는 OTT 정기결제나 청구서 요금 납부 등을 인터넷 접속 없이도 할 수 있다. 실제로 작년 12월 VISA 카드에서 AA를 사용한 자동결제 서비스 도입을 발표한 바 있다. 다만, 모든 이더리움이 AA를 구현하지 않았다는 한계점을 감안하여 L2 스타크넷을 활용하겠다는 입장이다. 현재의 자동결제 서비스는 일반 은행 계좌에서 쉽게 설정할 수 있지만 궁극적으로 중앙화된 시스템을 거쳐야 한다. 하지만 AA를 통한 자동 결제 시스템은 중앙화된 은행을 거치지 않고, 사용자와 플랫폼을 직접적으로 연결해 ‘탈중앙성’이라는 블록체인의 본질적 가치를 구현한다.

B. 자체 토큰 발행 및 지갑의 탈중앙화

더불어 자산 관리라는 지갑의 본질적 기능 외에도, 지갑 내에 자체적인 토큰을 발행하는 방향도 있다. 대부분의 디파이 서비스는 토큰 발행을 기본적으로 하고 있거나 NFT 마켓 운영으로 수수료를 가져가는 방식을 취하고 있는데, 이와 마찬가지로 지갑 사업에서 자체 토큰을 발행한다면 어떤 긍정적인 결과를 불러올 수 있을까?

우선 개인지갑의 수수료 문제 해결에 일조할 수 있다. 개인지갑은 트랜잭션 과부하로 수수료 값이 급격하게 오르는 등 수수료의 변동성이 매우 크다는 치명적 단점 때문에 가상자산 사업자조차 사용을 꺼리는 경향이 있다. 그러나 지갑이 자체 토큰을 발행하게 되면, 토큰 홀더들에게 거래 수수료를 감면해 주는 혜택을 제공할 수 있다. 즉, 사용자 입장에선 거래 수수료 비용을 상당 부분 아낄 수 있는 기회이기에 지갑 서비스를 계속해서 사용하는 하나의 요인로서 작용할 것이다. 또한 비즈니스적 관점에서 볼 때, 지갑의 토큰 발행 기능을 활용한 포인트 통합 서비스도 가능해진다. 지갑이 다른 기업과 제휴를 맺음으로써 해당 기업들의 포인트를 지갑 내 자체 토큰으로 변환할 수 있다. 또한 지갑의 자체 토큰을 다른 제휴처의 포인트로 변환하는 것도 가능하므로, 사용자는 뿔뿔이 분산되어 있는 적립 포인트를 통합적으로 이용할 수 있게 된다.

더 나아가 토큰의 의결권 행사를 통해 ‘지갑의 DAO화’를 기대해 볼 수 있다. 발행된 자체 토큰이 거버넌스 토큰으로 기능한다면, 사용자에게 조직 내의 의사결정에 참여할 수 있는 일종의 투표권을 부여하면서 커뮤니티 형성 및 활성화에 중요한 역할을 한다. 해당 거버넌스 토큰 보유자만이 제안과 투표 참여가 가능하기에 사람들은 의결권 행사를 위해 토큰을 얻고자 노력할 것이고, 결과적으로 이는 지갑의 활발한 사용을 불러올 수 있다. 이렇듯 지갑이 DAO화 되면 DAO 내 구성원들끼리 하나의 개인키를 나눠 소유하는 방식으로 MPC 기술을 적용시키는 것도 가능하다. 이와 같이 자체 토큰 발행 기능이 지갑에 도입된다면 지갑 사용성 증대처럼 다양한 기대효과를 예상해볼 수 있다.

C. 지갑 내 탑재된 투자자문 서비스: 지갑 사업 타겟층 확장

기존의 금융시장에서 조명받고 있는 기술 중 하나는 ‘로보어드바이저(Robo-Advisor)’이다. 로보어드바이저란, 인공지능을 활용한 데이터 마이닝을 통해 고객에게 맞춤형 투자 포트폴리오를 추천해주는 프로그램을 말한다. 기존의 인간의 업무를 대체해 짜여진 알고리즘을 통해 실행함으로써 실수나 악용의 확률을 줄이며 객관적인 추천이 가능하다.

가상자산 지갑에 로보어드바이저를 도입시킬 경우, 별도의 고객 데이터를 제공받지 않아도 알고리즘에 필요한 정보를 수집할 수 있다. 보유한 자산의 종류, 홀딩 기간, 거래 빈도수, 트레이딩 성향 등 모든 데이터가 블록체인에 투명하게 공개되어 있기 때문에, 이를 수집하고 분석하는 과정이 간소화된다. 따라서 자산과 거래 내역 기반의 로보어드바이저 기능을 도입한 지갑은 새로운 지갑 사업 아이템으로서 활약할 수 있을 것이다. 또한 투자자는 로보어드바이저 기능을 사용하기 위해 기존 거래에서는 필요없던 웹3 지갑을 새롭게 생성해야 하므로 해당 기술은 지갑 사용자 유입의 한 요소가 된다.

5-2. 핀테크 서비스로 본 웹3 지갑의 슈퍼앱 발전 가능성

국내의 대표적인 핀테크 앱인 토스와 뱅크샐러드는 금융 기능 외에 다양한 기능을 추가하여 서비스를 확장하였다. 토스는 만보기, 채팅, 오늘의 머니팁, 주식 등의 기능이 있고, 뱅크샐러드는 유전자 검사, 습관 만들기, 은퇴 설계하기 등의 기능을 갖추고 있다. 특히 토스는 2022년 6월 기준 MAU 1,427만 명을 기록하는 등 독보적인 금융 플랫폼 MAU 1위를 달성하며 서비스 확장을 통한 슈퍼앱 전략에 성공하였다.

그렇다면 웹3 지갑은 슈퍼앱으로의 발전 가능성이 있을까? 토스와 뱅크샐러드처럼 금융 외의 다양한 서비스를 하나의 지갑에서 손쉽게 관리하기 위한 시도들이 Web3 생태계에서도 일어나고 있는데, 대표적으로 Backpack사에서 개발 중인 ‘xNFT’가 있다. xNFT란 실행가능한 코드가 담겨있는 NFT를 의미한다. 즉 디앱을 토큰으로 발행하는 것이 실현 가능하다는 의미이고 이는 다양한 서비스를 지갑 속에 내장하는 것이 가능하다는 것을 입증한다. 지갑이 일종의 앱스토어가 되고, 그 안에 담긴 xNFT 형태의 애플리케이션들을 지갑 내에서 자유롭게 실행시킬 수 있는 것이다. 따라서 웹3 지갑도 웹2 핀테크 서비스와 같이 다양한 서비스를 제공하는 디앱들을 지갑에 담을 수 있으며, 토스와 같이 슈퍼앱으로까지 발전할 가능성이 충분하다.

가상자산 지갑은 웹3 슈퍼앱을 넘어 웹2 영역까지 활용 범위를 확장할 수 있다. 예로, 모바일 신분증, 공인 인증서, 국가 인증 자격증 등 개인인증과 관련된 문서를 토큰화하여 하나의 지갑에서 관리한다면, 일상 속 모든 인증이 편리해질 것이다. 또한, 이렇게 지갑에 토큰화된 모바일 신분증을 보유한다면 연말정산 등 공공웹사이트에서의 민원처리 과정이 훨씬 간소화될 수 있을 것으로 기대된다. 이러한 움직임은 지갑 사업자가 본인인증과 자격증명을 요하는 여러 기업, 기관 등과 제휴를 맺는 것에서부터 시작될 것이다.

 

그러나, 국내에서는 웹2에 비해 웹3 지갑의 슈퍼앱을 향하는 행보가 잘 보이지 않는데, 전반적으로 웹3 지갑 사업이 확장하기 어려운 이유 중 하나는 한국의 ‘포지티브’ 규제이다. 외국은 대부분 ‘네거티브’ 규제이기 때문에 제한 범위 밖의 모든 영역을 다룰 수 있지만, 국내의 경우 규제에서 허가하는 범위 내에서만 사업 운영이 가능하고 그 외로 확장할 수 없다. 일례로, 위의 장표와 같이 다양한 DeFi 사업을 국내에서 운용하기 위해선 VASP 인가를 등록해야 한다. 이를 위해 사업자는 ‘실명계정 발급, 자금세탁방지시스템 구축, 정보보호관리체계(ISMS)를 인증 및 획득해야 한다는 정해진 법의 테두리 안에서만 사업을 진행할 수 있다. 이처럼 다양한 서비스를 지갑에 도입하는 것은 현 상황에서 다소 어려운 것으로 보인다. 따라서 슈퍼앱으로서의 발전 가능성이 충분한 웹3 지갑이 더 다양한 영역으로 서비스를 확장하기 위해서는 가장 먼저 규제의 완화가 따라야 한다.

6. 지갑 시장 활성화를 가로막는 허들은 바로 규제

6-1. 국내 지갑 관련 규제인 KYC, 트래블룰

A. KYC와 트래블룰이란?

가상자산 거래 보관 및 관리 서비스를 제공하는 지갑 사업자들은 모두 가상자산사업자(VASP)로 분류된다. VASP는 가상자산이 자금 세탁 범죄로 사용되는 것을 방지하기 위해 국내 고객확인인증(일명 KYC) 내용이 담긴 개정 특정금융정보이용법(이하 특금법)에 규정된 고객확인의무를 준수해야 한다. 이에 따라 VASP는 사용자사용자에 대한 개인 식별 정보를 수집해야 하며, 공식 데이터베이스에서 해당 정보가 확인될 필요가 있다. 또한 KYC는 서류 등으로 개인을 특정할 수 있는 정보를 확인하는 신원 확인, 이를 진행하는 사람이 정말 본인이 맞는 지 확인하는 본인 인증, 이렇게 두 가지 과정으로 보통 구성된다. 사용자는 이러한 프로세스를 통해 본인의 이름, 주소, 생년월일 같은 개인정보를 제공해 가입할 수 있다. VASP는 이러한 정보를 사용해 사용자의 신원 확인을 하고 사용자의 정보의 정확성과 최신 상태임을 확인해야 한다.

다음으로 국내 트래블룰(자금이동추적규칙) 규제에 대해 알아보자. 트래블룰은 VASP가 가상자산을 송수신할 때 송수신자의 정보를 확인하는 절차를 거치도록 하는 국제자금세탁방지기구(FATF)의 규정이다. 국내 특금법 개정안에 관련 규정이 포함되어 ‘코인 실명제’ 제도라는 이름으로 시행된 이후, 국내 거래소들은 거래소간 혹은 개인지갑으로 거래 시 신원인증이 완료된 곳으로만 전송이 가능하다. 그러나 국내 VASP는 개인정보보호법에 따라 사용자의 정보를 타사와 공유하는 것이 불가능하기 때문에 트래블룰을 준수하기가 어려운 상황이다.

B. KYC와 트래블룰은 지갑사업에 왜 문제가 되는가?

다음으로는 여러 규제들 중  KYC와 트래블룰 규제가 지갑 사업에 있어 특히 문제가 되는 이유에 대해 간략하게 다뤄보겠다. 먼저 가상자산사업가가 지속적으로 고객을 온보딩하고 사업을 진행하기 위해선 반드시 KYC 정책/지침을 이해하는 것이 중요하다. 또한 KYC 준수에 대한 준비를 사전에 해둠으로써, KYC와 관련된 잠재적인 법적 이슈나 규제 위반으로부터 지갑 회사와 고객 모두를 보호할 수 있다. 트래블룰 역시 국내 지갑 사업에 매우 중대한 영향을 미친다. 트래블룰 시행에 대한 대응으로 코인 거래소들은 트래블룰 관련 솔루션을 연동하고 입출금이 가능한 외부 지갑 주소에 대한 가이드라인을 만들어왔다. 특히 최근 NFT와 디파이에 대한 관심이 증가하면서 메타마스크 등 외부의 개인 지갑에 대한 수요가 늘어났기 때문에, 어떤 외부 지갑 주소로 입출금이 가능한지가 사용자 입장에선 중요한 사항일 것이다.

그러나 FATF나 금융당국에서 제시된 트래블룰 가이드라인이 아직까지 부재하기 때문에 거래소마다 이용방법이 다르다는 문제가 있었다. 현재는 국내 거래소별 화이트리스트를 통해 사전 등록한 지갑 주소에 대해선 입출금이 가능하지만 외부 개인 지갑 등록은 당분간 어려울 것으로 생각한다. 즉 트래블룰 시행으로 개인정보 확인이 어려운 개인지갑의 사용 제한이라는 결과가 발생하는 것이다. 이는 지갑 시장 내에서 거래 활성화를 막고 개인지갑의 신규 이용자 유입이 적어지게 만들어, 가상자산 사업가 입장에서도 지갑 사업의 확장 및 성장에 있어서 걸림돌이 될 수밖에 없다.

C. 메타마스크처럼 탈중앙화를 지향하는 지갑 같은 경우 어떻게 대응하는가?

앞서 우리는 VASP가 특금법의 ‘고객 확인의무’에 따라 이용자를 대상으로 한 KYC 프로세스를 도입해야 한다는 것을 확인하였다. 그러나 개인 식별 정보를 요구하지 않는 메타마스크, 마이이더 월렛과 같은 탈중앙화된 비수탁형 지갑은 KYC를 따르지 않는다.  트래블룰 시행 이후 개인 지갑 사용만으로는 거래소 이용이 불가능하기 때문에 이에 대한 대응 방법으로 본인 소유의 지갑임을 인증받은 계정끼리만 거래하도록 하는 화이트리스트 등이 거론된다. 지금까지 KYC를 지원하지 않던 메타마스크도 국적, 신분증 번호, 출생지, 신원을 확인할 수 있는 신분증 같은 정보를 요구하도록 개인정보보호정책을 개편하면서 KYC 제도를 준수하려는 움직임을 보이고 있다.

6-2. 국내 지갑 Klip, Dosi의 규제 대응 현황

그렇다면 국내의 가상자산 개인 지갑들은 이러한 규제에 대해 어떻게 대응하고 있을까? SNS 계정 연동을 통해 지갑을 생성하는 카카오톡의 Klip 지갑과 라인의 Dosi 지갑이 그 예시이다. Klip 지갑은 계정을 생성하기 위해 카카오톡 계정을 연동해야 한다. 이 과정에서 실명, 휴대전화 번호, 이메일 주소 등 기존 카카오톡 계정에 담겨있던 개인 정보가 전달되기 때문에 Klip 지갑에도 고객의 신원 정보가 담기게 된다. Dosi 지갑 역시 계정을 생성하려면 라인, 페이스북, 구글, 네이버 중 하나의 계정을 연결해야 한다. 이후 정보 제공 동의를 거쳐 6자리의 패스 코드를 설정하면 지갑 생성이 완료됨과 동시에 Citizen NFT라는 가입 환영 NFT가 지급된다. 따라서 Dosi 지갑과 연동한 SNS 계정으로부터 제공된 신원 정보로 KYC를 준수하고 있다.

이와 같이 SNS 계정을 연결하여 신원 정보를 전달하는 방식을 채택하지 않는 개인 지갑들은 어떻게 고객에게 신원 인증을 받을 수 있을까? 모든 지갑들이 KYC 준수 솔루션을 마련하기는 쉽지 않은데, VASP는 보통 스타트업 혹은 중소기업의 형태로 시작하기 때문에 비대면 신원 인증과 같은 기능을 구현하는 데에 요구되는 기획, 디자인, 개발 과정이 부담이 될 수 있다. 또 국내외 모두 개인 지갑에 대한 규제의 방향성이 아직까지도 뚜렷하게 나오지 않았기 때문에, KYC 등의 체계를 갖출 필요성을 크게 느끼지 못할 수 있다. 특히 메타마스크와 같이 매우 오랫동안 지갑 생태계의 점유율을 장악해온 서비스의 경우, 가상자산 생태계의 가치관을 신경쓰지 않을 수 없는데, 정보 수집에 대한 커뮤니티의 부정적인 여론도 간과할 수 없을 것이다. 이러한 여러가지 이유로 신원 인증 과정을 갖추지 않은 개인 지갑들이 KYC 규제라는 허들로 인해 거래소 출금이 막히는 등의 불이익을 겪지 않을 수 있는 대안은 무엇이 있을까?

6-3. 웁살라 시큐리티 등 신흥 솔루션 제시

대표적인 해결방안의 사례로는 블록체인 보안 업체인 웁살라 시큐리티가 2022년 1월에 출시한 ‘컴패스 프로토콜’이 있다. 컴패스 프로토콜이란 KYC/AML 시행 후 신원 인증 NFT를 지급하는 방식의 웹3.0 전용 신원 인증 플랫폼이다. 앞서 언급한 바와 같이 트래블룰이 시행됨에 따라 국내 거래소들은 개인지갑으로 거래 시, 신원 확인이 가능한 개인 지갑으로만 자산 전송이 가능하다. 이에 따라 중앙화 거래소를 이용하는 이용자들은 컴패스 프로토콜을 통해 KYC/AML 정보를 제공하여 인증 절차를 마치면 고유한 신원 증명 NFT를 발급받을 수 있다.

 

이러한 NFT의 활용으로 지갑에 신원 증명서를 항시 보유하는 것이 가능해졌다. 이로 인해 실명 인증 없이 계좌만 생성하여 거래할 경우 발생할 수 있는 범죄 등으로 인한 피해가 적어진다. 또 NFT를 보유하다가 필요시 상황에 맞게 선택적으로 본인인증에 활용할 수 있기 때문에 규제에 대응하며 블록체인 서비스를 유연하게 사용할 수 있도록 돕는다.

컴패스 프로토콜은 가상자산 지갑을 연동하여 자금 세탁에 연루된 지갑과의 연관성 및 이상행위 여부를 검증하는 AML, 성명, 이메일 주소 등을 입력하여 고객의 신원을 인증하는 KYC, 마지막 NFT 인증서 발행이라는 프로세스에 따라 비교적 쉽고 간편하게 발급받아 사용할 수 있다는 강점을 가진다. KYC 인증뿐만 아니라 AML 인증 절차도 거치기 때문에 신원 증명 외에도 웹3 생태계 전반에서 다양한 증명서로 이용할 수 있으며, 신원 도용 및 금융 사기와 같은 범죄 발생을 막기 위한 대안이 될 수 있기 때문에 이러한 솔루션의 필요성이 점점 증대되고 있다.

이 외에도 많은 VASP가 기능 구현에 있어서 특히 부담을 느끼는 eKYC(비대면 실명 확인 인증)를 대신 구현해서 API 형태로 솔루션을 제공하는 useB와 같은 기업들도 있다. 이와 같이 규제로 인해 발생하는 한계점을 해결하기 위한 ‘레그테크(Reg-Tech) 스타트업’이 많이 생겨나며 가상자산과 관련된 국내 규제에 대한 대응 방안은 계속해서 발전하고 있다.

7. 맺으며

우리는 현재 블록체인 기술이 대중화되기 전 과도기에 놓여있다. 그동안 큰 장벽으로 여겨진 '시드구문' 문제점을 해결하기 위한 일환으로 SC, MPC 솔루션을 살펴봄으로써 대중화 가능성을 엿볼 수 있었다. 또한 앞서 제시한 자동결제, 자체 토큰 발행을 통한 DAO 시스템 구축 등 새로운 형태의 지갑 비즈니스들을 구상해 볼 수 있다. 지갑 시장은 플랫폼 사업까지 서비스를 확장되어 웹3 내의 슈퍼앱으로 성장할 수 있는 잠재력을 갖추고 있다. 이와 같이 지갑 서비스들이 강화됨으로써, 웹2에서 웹3로의 온보딩을 돕는 역할로 자리 잡을 수 있다. 따라서 지갑이 블록체인의 대중화 시기를 더욱 앞당길 수 있는 하나의 촉매제로  작용하길 기대해 본다.

 

<주의사항>

본 글에 기재된 내용들은 작성자 본인의 의견을 정확하게 반영하고 있으며 외부의 부당한 압력이나 간섭 없이 작성되었음을 확인합니다. 작성된 내용은 작성자 본인의 견해이며, (주)크로스앵글의 공식 입장이나 의견을 대변하지 않습니다. 본 웹사이트를 통해 제공되는 정보는 투자 자문이나 권유에 해당하지 않습니다. 별도로 명시되지 않은 경우, 투자 및 투자전략, 또는 기타 상품이나 서비스 사용에 대한 결정 및 책임은 사용자에게 있으며 투자 목적, 개인적 상황, 재정적 상황을 고려하여 투자 결정은 사용자 본인이 직접 해야 합니다. 보다 자세한 내용은 금융관련 전문가를 통해 확인하십시오. 과거 수익률이나 전망이 반드시 미래의 수익률을 보장하지 않습니다.

https://xangle.io/insight/research/63f5e527b5a7786c6f6fc047?utm_source=telegram&utm_medium=organic_social+&utm_campaign=Originals_230223

 

 

Drops7: Megaton Finance — ‘oMEGA’

We are proud to announce the 7th Drops with ‘oMEGA’ of Megaton Finance!

1. oMEGA Drops information

  • Total Tokens: 100,000 oMEGA
  • Snapshot duration: Feb 14th ~ Feb 20th, 2023 (7 days)
  • Claim date: 00:00 a.m (UTC), Feb 23th, 2023

Drops is a Meshswap platform that enables various Polygon-based projects to effectively distribute their initial token resources and successfully perform the entire process from distribution, implementation, and liquidity activation plan. Only MESH stakers are eligible for new token project airdrops.

2. How to participate

Exclusive for MESH Stakers. Stake MESH to earn oMEGA tokens.

The airdrop will be distributed based on the snapshot of the vMESH amount held by users after MESH staking, and the snapshot will be held once a day at 00:00 AM (UTC). To receive the airdrop, users must have staked MESH and obtained vMESH before the snapshot.

① Go to the “Staking and voting” section on Meshswap and stake MESH.

Link to stake MESH: https://meshswap.fi/staking

② Users can check the expected amount of airdrops in the Upcoming status Drop card. (*)

③ The airdrop quantity is determined according to users’ vMESH stake at the time of one snapshot every day.

④ Users can claim the final airdrop quantity with their wallet on the claim date.

(*) Drops under “Upcoming” status, “My Airdrop Amount” is a real-time estimation of how much users will be receiving.

The actual amount received will be based on snapshots that occur every 00:00 am (UTC)

How to Stake MESH

3.. Megaton Finance & MEGA

About Megaton Finance

Megaton Finance is the first autonomous financial protocol within the TON network that provides yield farming opportunities such as swaps and pair deposits. Megaton Finance has a structure that combines the AMM (Automated Market Maker) DEX business model prevalent in the DeFi ecosystem, the scalable multi-chain economy, and the unique characteristics of the TON network.

About MEGA

MEGA is a governance token that maintains the ecosystem of Megaton Finance, and the initial quantity issued through inflation is provided to LP (Liquidity Provider). When the staking function is added to Megaton Finance, MEGA staking participants will receive MEGA as a reward. Total supply of MEGA is 100,000,000 MEGA. Community LP is 54,000,000 MEGA(54% of the total supply) and has a halving period(every 4 years).

MEGA Token Allocation

1. Total Supply: 100,000,000 MEGA

2. Token Distribution

  • Community LP 54%
  • Developer 16%
  • Investor 7%
  • Advisory 5%
  • Marketing 5%
  • Partnership 5%
  • Liquidity 4%
  • Reserve 3%
  • Initial Supply 1%

3. Initial Supply: 1,000,000 MEGA

To build the initial Megaton Finance ecosystem, 1,000,000 MEGA (1% of total supply) will be utilized for marketing, MEGA LP incentives, and Tonstarter.

Megaton Finance will create a stable trading environment by securing potential users and liquidity on the TON network through the events using initial supply.

4. Halving

  • Inflation is equal to 1/2 of the previous year’s inflation every 4 year

5. Distribution quantity per block

  • 0.217013889 MEGA/block ,18,750 MEGA/day (based on first-year distribution)
  • TON block time = 5 seconds

Learn more about MEGA tokens

Megaton Finance

Official Website: https://megaton.fi

Discord: https://discord.gg/megatonfinance

Telegram (ANN): https://t.me/MegatonFinanceChannel

Telegram (Global): https://t.me/MegatonFinanceOfficial

Telegram (Korean): https://t.me/MegatonFinanceOfficialKorea

Twitter: https://twitter.com/Megaton_Fi

 

메가톤 파이낸스에서 위믹스 페어에 예치하는 방법

 

  1. 메가톤 파이낸스(https://megaton.fi/)에 접속 후 [Connect Wallet] 버튼을 눌러 원하는 톤 지원 지갑을 연결해주세요.

 

2. 톤 지원 지갑을 성공적으로 연결 후 [Deposit] 탭을 눌러주세요.

 

3. 이벤트 *대상 페어 중 원하는 페어를 선택 후 오른쪽의 [Manage] 버튼을 눌러주세요.
* 대상 페어: oUSDC-oWEMIX$ / oWEMIX-oWEMIX$

 

4. 예치하려는 정보가 맞는지 확인 후 [Continue] 버튼을 눌러주세요.

 

5. 예치하려는 페어 중 한 쪽 토큰에 예치할 수량을 입력하면 나머지 토큰의 예치 수량도 이미 예치한 토큰 수량의 비율에 따라 자동으로 입력됩니다. 이후 [Deposit] 버튼을 눌러주세요.

 

6. 선택한 페어 중 [Deposite Token A]를 선택해 주세요.

 

7. 연결한 톤 지원 지갑에 [Token A]에 대한 트랜잭션 확정 팝업(Confirm Transaction)이 표시되면 내용 확인 후 [SEND TON] 버튼을 눌러주세요.

 

8. [Password] 미니 팝업에 비밀번호 입력 후 [NEXT] 버튼을 눌러주세요.

 

9. 첫 번째 토큰 예치가 완료되면 [Done!] 메시지가 새로운 미니 팝업에 표시됩니다. 미니 팝업에서 [CLOSE] 버튼을 눌러주세요.

 

10. Tonken A와 동일하게 선택한 페어 중 [Deposite Token B] 버튼을 눌러주세요.

 

11. [Token B]에 대한 Confirmation 미니 팝업이 표시되면 내용 확인 후 [SEND TON] 버튼을 눌러주세요.

 

12. [Password] 미니 팝업에서 비밀번호 입력 후 [NEXT] 버튼을 눌러주세요.

 

13. 두 번째 토큰 예치가 완료되면 [Done!] 메시지가 미니 팝업에 표시됩니다. 미니 팝업에서 [CLOSE] 버튼을 눌러주세요.

 

14. [Deposit] 화면 상단의 [My deposit]에서 내가 예치한 페어의 현황을 확인할 수 있습니다.

 

https://medium.com/megatonfinance/%EB%A9%94%EA%B0%80%ED%86%A4-%ED%8C%8C%EC%9D%B4%EB%82%B8%EC%8A%A4%EC%97%90%EC%84%9C-%EC%9C%84%EB%AF%B9%EC%8A%A4-%ED%8E%98%EC%96%B4%EC%97%90-%EC%98%88%EC%B9%98%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95-240c92859f3e

 


 

안녕하세요 메가톤 파이낸스 커뮤니티 여러분 !

 

2023년 1월 30일, 메가톤 파이낸스가 톤(TON, Telegram Open Network) 블록체인에서 정식 출시했습니다.

 

메가톤 파이낸스는 AMM 기반 DEX로 톤 디파이 사용자들에게 다양한 금융 기회를 제공할 예정입니다.

 

자세한 사항은 아래 내용을 확인해주시기 바랍니다 .

 

■ 목차

1. TON (The Open Network)

2. 메가톤 파이낸스 소개

3. 오르빗 브릿지: 밸리데이터

4. CertiK 오딧

5. MEGA: 거버넌스 토큰

6. MEGA 토크노믹스

 

1. TON (The Open Network)

 

톤(TON, The Open Network)은 수십억 명의 사용자를 온보딩하기 위해 텔레그램이 설계한 탈중앙 레이어 1 블록체인입니다. 월 활성 사용자 수(MAU)가 7억명에 달하는 글로벌 메신저인 텔레그램에서 추진한 프로젝트로, 추후 오픈 소스로 전환되면서 개발자 커뮤니티에 의해 발전하고 있습니다. 최근 텔레그램 내 지갑 기능 업데이트로 톤 블록체인의 네이티브 토큰인 톤코인(Toncoin)의 활용도 또한 증가하는 추세입니다.

 

2022년 기준, 톤 블록체인은 진정한 확장성을 갖춘 몇 안 되는 블록체인 프로젝트 중 하나로 남아 있습니다. 여전히 수백만 건을 수행할 수 있는 가장 진보된 블록체인 프로젝트이며, 향후 필요시 초당 수천만 건의 진정한 튜링 완전 스마트 컨트랙트 트랜잭션을 수행할 수 있습니다.

 

톤은 출범 이후 5년간 놀라울 정도로 진화해왔고, 여전히 범용 블록체인 기술의 최첨단을 달리고 있습니다. 2017년부터 톤 백서에서 제안한 아키텍처 접근 방식의 효율성은 지난 몇 년 동안 개발된 톤 기술 구현을 기반으로 한 다양한 테스트넷 및 메인넷의 입증된 고성능으로 더욱 검증됐습니다. 톤 공식 홈페이지의 블록체인 분석에 따르면 설계 및 구현 측면에서 이더리움과 솔라나보다 우위에 있으며, 개발자와 커뮤니티의 높은 기대치를 충족할 수 있는 궁극적 해결책이 될 수 있다고 합니다.

 

톤의 특별함은 블록체인 그 자체에만 있지 않습니다. 무엇보다 톤은 7억명의 MAU를 자랑하는 텔레그램 메신저와 다양하게 결합할 수 있다는 잠재력이 있습니다. 이는 타 블록체인에서 찾아볼 수 없는 특별함으로, 이미 톤 생태계는 수백개에 달하는 챗봇 & 웹앱(지갑, 브릿지, 마이닝, 채널, 챗, 소셜 네트워킹, 겜블링 등) 기반을 갖추고 있습니다.

 

2. 메가톤 파이낸스

 

메가톤 파이낸스는 오지스가 개발한 탈중앙화 거래소 프로토콜로 참여자들에게 스왑, 이자 농사(Yield Farming) 등의 금융 기회를 제공합니다. 사용자는 메가톤 파이낸스에 유동성을 공급하고 거래 수수료 및 MEGA 토큰을 보상으로 얻을 수 있습니다. MEGA 토큰 마이닝은 2월 23일 오전 9시(KST)에 시작될 예정입니다.

 

출시 시점 기준, 메가톤 파이낸스는 유니스왑 V1과 같이 페어와 페어를 연결하는 라우팅 기능이 없습니다. 모든 페어는 WTON을 기반으로 생성되며 토큰을 스왑하려면 2번의 스왑 과정을 거칩니다. 가령 A 코인을 B 코인으로 스왑 시 WTON/A 페어에서 A 코인을 WTON으로 변환한 뒤 WTON을 다시 활용하면 WTON/B 페어에서 B 코인으로 스왑할 수 있습니다. 추후 톤 블록체인 업그레이드 시 유니스왑 V2와 같은 라우팅 기능 활용 및 즉각적인 스왑 기능을 구현하고자 합니다.

 

또한, 메가톤 파이낸스를 단일/플러스 예치, 레버리지 파밍 등 다양한 금융 상품을 탑재한 프로토콜로 발전시켜 나갈 것입니다. 사용자는 톤 생태계 내의 자산을 다양한 방법으로 활용해 수익 창출 기회를 얻을 수 있습니다.

 

궁극적으로 메가톤 파이낸스는 오지스가 개발할 예정인 텔레그램 챗봇 기능을 극대화해 사용자 경험을 크게 개선할 계획입니다. 이를 통해 기존 디파이 사용자뿐 아니라 7억명의 텔레그램 사용자를 모두 수용할 수 있는 사용자 친화적인 디파이 프로토콜이 되겠습니다.

 

3. 오르빗 브릿지

 

메가톤 파이낸스는 오지스가 개발한 글로벌 탑 7 브릿지인 오르빗 브릿지를 활용해 톤 생태계를 확장하고자 합니다. 오르빗 브릿지는 80만건 이상의 트랜잭션, 120억 달러를 상회하는 총거래량, 2억 달러 이상의 TVL을 기록하면서도 단 한 번의 해킹 사고가 나지 않은 견고한 크로스체인 브릿지입니다. 오르빗 브릿지는 현재 Ethereum, Klaytn, BNB, HECO, Stack, Ripple 등 19개의 다양한 네트워크와 ETH, USDT, USDC 등 86개 이상의 자산을 지원하고 있습니다.

 

오르빗 브릿지는 Trustless, Secure Multiple-Signature Verification으로 오지스, Ground X, DSRV 등 분권화된 주체가 온체인에서 합의를 달성하는 탈중앙 시스템과 스마트 컨트랙트 기반의 빠른 합의 프로세스를 구축했습니다. 메가톤 파이낸스는 안정적이면서도 확장성이 높은 오르빗 브릿지를 통해 Ethereum을 비롯한 다양한 네트워크에 있는 BTC, ETH, USDT, USDC, MATIC 등 주요 자산 활용 기회를 제공합니다.

 

메가톤 파이낸스는 오르빗 브릿지를 통해 다양한 메인넷의 자산을 톤 생태계 안으로 유입할 것입니다. 수많은 프로젝트는 톤 생태계를 통해 그들의 블록체인, 프로토콜, 토큰 등을 자연스럽게 홍보할 수 있으며, 더 많은 사용자를 지지자로 만들 수 있습니다. 오르빗 브릿지는 이들 모두를 잇는 연결 고리로서, 메가톤 파이낸스와 함께 성장할 것입니다.

 

4. CertiK 보안 감사

 

메가톤 파이낸스는 톤 생태계의 대표적인 탈중앙화 금융 프로토콜로 거듭나기 위해 프로토콜의 안전성을 우선순위에 놓았습니다. 다양한 자산이 예치될 메가톤 파이낸스 컨트랙트의 위험 요소를 최소화하고자, 세계적인 블록체인 보안 기업인 CertiK에서 보안 감사를 받았습니다. CertiK에서 진행한 보안 감사 결과 및 요약 내용은 아래를 확인바랍니다. 앞으로도 정기적인 보안 감사 진행으로 사용자가 안심하고 메가톤 파이낸스를 사용할 수 있도록 노력하겠습니다.

 

CertiK 보안 감사 리포트

 

 

5. MEGA

 

메가톤 파이낸스는 비신뢰 기반 탈중앙화 프로토콜로 특정 운영자가 아닌 거버넌스에 의해 프로토콜과 관련된 모든 사항을 결정합니다. 따라서 메가톤 파이낸스는 거버넌스를 통해 정책과 방향성이 결정될 수 있도록 거버넌스 토큰 ‘MEGA’를 발행했습니다.

 

MEGA는 유동성 마이닝, 스왑, 거래소(CEX, DEX) 등에서 획득할 수 있으며, 총 발행량은 100,000,000 MEGA입니다. 초기 공급량은 전체 발행량의 1%이며, MEGA의 구체적인 토크노믹스는 다음과 같습니다.

 

6. MEGA 토크노믹스

1) 총 발행량: 100,000,000 MEGA

2) 블록당 분배 수량: 0.217013889 MEGA

3) 일일 마이닝 수량: 18,750 MEGA

4) 반감기: 4년

5) 토큰 컨트랙트: EQB-cCOQDwerEnUD4–6xoYD0eL6_yC1zogAvA5GuXTF0iDIf

 

https://tonscan.org/jetton/EQB-cCOQDwerEnUD4-6xoYD0eL6_yC1zogAvA5GuXTF0iDIf

 

TON Explorer — The Open Network

 

tonscan.org

 

 

A. MEGA 초기 발행량

메가톤 파이낸스의 초기 생태계를 구축하기 위해 1,000,000 MEGA(전체 발행량의 1%)를 마케팅, MEGA LP 인센티브 및 Tonstarter에 활용합니다. 메가톤 파이낸스는 초기 공급량을 활용한 이벤트로 사용자와 유동성을 확보해 톤 네트워크상에서 안정적인 거래 환경을 조성할 것입니다.

 

B. MEGA 최종 토큰 분배량

MEGA의 최종 분배량은 100,000,000 MEGA이며 위의 표와 같이 분배됩니다.

 

메가톤 파이낸스에 많은 참여 부탁드립니다.

 

메가톤 파이낸스의 개발사 오지스는 클레이스왑, 메시스왑 등 디파이 프로토콜을 개발하고 운영하면서 세계적인 수준의 TVL과 MAU를 달성한 바 있습니다. 이러한 경험을 바탕으로 톤 생태계 위에 사용자 친화적인 DEX를 출시했습니다.

 

현재 메가톤 파이낸스는 소개 부분에서 언급했듯이 라우팅 기능이 없습니다. 유니스왑 V1처럼 WTON을 기반으로 생성된 각 페어를 2번 스왑해야 원하는 토큰을 획득할 수 있습니다. 오지스는 이로 인해 발생할 사용자들의 불편을 잘 인지하고 있습니다. 톤 블록체인이 업그레이드되면 유니스왑 V2와 같이 즉각적으로 스왑이 가능한 기능을 신숙하게 구현하도록 하겠습니다.

 

추후 메가톤 파이낸스에 레버리지 파밍, 거버넌스, 롱/숏 포지션 예치 등 다양한 금융 서비스가 추가되면 일반적인 거래소 이상의 금융 경험을 제공할 것입니다. 따라서 메가톤 파이낸스 생태계에는 MEGA 장기 투자자, MEGA 스테이킹을 통해 거버넌스에 참여하려는 사용자, 다양한 디파이 서비스를 단기적으로 이용하는 사용자 등 다양한 유형의 사용자가 참여할 수 있습니다. 더 나아가, 메가톤 파이낸스와 텔레그램 간 완벽한 결합으로 톤 생태계 참여자뿐만 아니라, 텔레그램 사용자들도 쉽게 사용할 수 있는 프로토콜로 자리매김하겠습니다.

 

그동안 톤 블록체인 기반의 디파이를 경험하고 싶었지만 생소한 UI/UX와 메이저 자산의 부재 등으로 어려움을 겪었던 모든 분에게 메가톤 파이낸스는 새로운 기회가 될 것으로 기대합니다. 톤 생태계에 활력을 불어넣을 메가톤 파이낸스에 많은 참여 부탁드립니다!

 

 

메가톤 파이낸스

공식 홈페이지: https://megaton.fi

디스코드: https://discord.gg/megatonfinance

레딧: https://www.reddit.com/r/MegatonFinance

텔레그램 (공지): https://t.me/MegatonFinanceChannel

텔레그램 (글로벌): https://t.me/MegatonFinanceOfficial

텔레그램 (국내): https://t.me/MegatonFinanceOfficialKorea

트위터: https://twitter.com/Megaton_Fi

 

팀 & 제품

오지스: https://ozys.io

오르빗 체인: https://orbitchain.io

오르빗 브릿지: https://bridge.orbitchain.io

벨트 파이낸스: https://belt.fi

클레이스테이션: https://klaystation.io

클레이스왑: https://klayswap.com

메시스왑: https://meshswap.fi

WTON 게이트웨이: https://wton.dev

 

https://medium.com/megatonfinance/%EB%A9%94%EA%B0%80%ED%86%A4-%ED%8C%8C%EC%9D%B4%EB%82%B8%EC%8A%A4-%EC%A0%95%EC%8B%9D-%EC%B6%9C%EC%8B%9C-dda90558c723

 

메가톤 파이낸스 정식 출시

안녕하세요 메가톤 파이낸스 커뮤니티 여러분 !

medium.com

 

 

Megaton
https://tonscan.org/jetton/EQB-cCOQDwerEnUD4-6xoYD0eL6_yC1zogAvA5GuXTF0iDIf

오지스 메가톤(JETTONS) 관련 링크
https://tonscan.org/address/EQD1FNDHG_Z4teeam39gPUQORB574UYKMfmEs1nYrML5GNQQ#tokens

WTON
https://tonscan.org/jetton/EQCajaUU1XXSAjTD-xOV7pE49fGtg4q8kF3ELCOJtGvQFQ2C

Orbit Bridge Ton Meshswap Protocol
EQCeGZcyr9Mkxf7OFLqyn40LLw292aCN_bxnT856rOkYW-I5

Orbit Bridge Ton Ethereum
EQAW42HutyDem98Be1f27PoXobghh81umTQ-cGgaKVmRLS7-

Orbit Bridge Ton USD Tether
EQC_1YoM8RBixN95lz7odcF3Vrkc_N8Ne7gQi7Abtlet_Efi

Orbit Bridge Ton USD Coin
EQC61IQRl0_la95t27xhIpjxZt32vl1QQVF2UgTNuvD18W-4

Orbit Bridge Ton Matic Token
EQBq4d4GPyBoh-Pjnf3wxUyQSS28WY2Yt-7cPAG8FHpWpNRX

D-3! 론칭 기대하고 계시나요?

드디어 2023년 1월 30일 메가톤 파이낸스가 론칭 될 예정입니다.

MEGATON FINANCE 커밍 순!

 

https://twitter.com/Megaton_Fi/status/1618883615630434307

메가톤 파이낸스 커뮤니티 여러분 안녕하세요.

톤(Toncoin)의 상호운용성 문제에 대한 솔루션인 WTON 게이트웨이 출시 소식을 안내해드립니다.

자세한 사항은 아래 내용을 확인해주시기 바랍니다.

1. WTON 게이트웨이 소개

TON ↔ WTON 게이트웨이는 톤(Toncoin)을 젯톤(Jetton) 표준인 랩트톤(WTON)으로 변환해주는 서비스를 제공합니다. 랩트톤은 톤(TON: The Open Network) 블록체인 출시 이후 개발된 젯톤 토큰 표준으로, 톤 블록체인에서 토큰이 전송되는 방식 및 토큰 간의 일관된 전송 기록을 유지하는 방법을 정의합니다. 랩트톤은 톤 네트워크 내의 톤과 1:1로 지원되는 최초의 젯톤 표준 토큰입니다.

기존 톤 보유자는 가상자산 거래소에서만 활용 및 거래가 가능했습니다. WTON 게이트웨이에서 톤을 랩트톤으로 변환함으로써 메가톤 파이낸스를 비롯한 톤 생태계의 디파이 프로토콜에서도 톤을 사용할 수 있습니다. 또한, 언랩(unwrap) 기능을 사용하여 랩트톤에서 다시 톤으로 변환할 수 있습니다.

2. WTON 게이트웨이 출시 배경

톤은 글로벌 메신저 플랫폼인 텔레그램이 설계한 레이어 1 블록체인인 톤의 네이티브 토큰입니다. 하지만 톤 블록체인의 기축통화인 톤은 다른 EVM 기반 코인 및 알트코인과 호환하지 않습니다. 각각의 블록체인은 별개의 시스템이므로, 기본적으로 특정 블록체인에 존재하는 코인은 다른 블록체인에서 활용할 수 없습니다. 하지만, 우리 팀은 고립된 톤 블록체인을 활성화하고, 톤 블록체인의 기술력과 문화적 다양성을 기반으로 하는 톤 생태계를 구축하기 위해서는 가장 먼저 톤의 활용성을 제고하는 것이 필요하다고 판단했습니다. 이에 끊임없이 고민한 결과, 톤의 상호운용성 문제를 래핑(wrapping)이라는 방법으로 해결할 수 있다는 결론을 도출했습니다.

래핑은 ‘랩트톤’이라는 톤과 동등한 토큰을 패키징이 아닌, 스마트 컨트랙트를 통해 거래하는 것을 의미합니다. 쉽게 말해, 래핑이란 블록체인 간 비(非)상호운용성이라는 제한을 우회하여 다른 블록체인에서 토큰을 사용하는 방법입니다. 앞서 언급한 대로, 톤 블록체인에 존재하는 톤은 다른 블록체인에서 활용할 수 없습니다. 하지만 WTON 게이트웨이에서 톤을 래핑함으로써 메가톤 파이낸스를 비롯한 톤 메인넷의 디앱에서 톤을 활용하고, 다른 EVM 기반 토큰과 교환 및 거래할 수 있습니다.

3. WTON 게이트웨이 기대 효과

톤을 스마트 컨트랙트를 기반으로 한 다양한 기능에서 활용하려면 젯톤 표준 토큰인 랩트톤으로 변환해야 합니다. WTON 게이트웨이에서 랩트톤으로 변환함으로써 톤 블록체인에 구축된 기본 통화인 톤의 사용 범위를 확장할 수 있습니다.

즉, 랩트톤은 블록체인의 상호운용성 문제에 대한 솔루션입니다. 랩트톤은 젯톤 표준의 유연성을 갖춘 토큰으로, 탈중앙화된 플랫폼들에서 ETH를 자유롭게 다른 토큰들과 호환할 수 있도록 ERC-20 토큰화한 랩트이더(wETH)와 같은 역할을 할 것입니다. 톤과 랩트톤은 언제든지 1:1로 교환이 가능하고, 랩트톤은 다양한 디앱에서 ETH, USDT, USDC, MATIC 등 다양한 ERC-20 토큰으로 교환 및 스왑이 가능합니다.

사용자는 랩트톤을 톤 블록체인 기반의 DEX인 메가톤 파이낸스를 비롯한 여타 톤 생태계 내의 디파이 프로토콜에서 활용할 수 있습니다. 또한, 이더리움, 폴리곤, 클레이튼 등 다른 블록체인 내의 다양한 디파이 프로토콜에서 주요 암호화 자산으로 발돋움할 뿐만 아니라, 멀티체인 유니버스를 오가는 사용자를 연결하는 매개가 될 것으로 기대합니다.

 

[WTON 게이트웨이 사용자 가이드 및 참고사항]

  • WTON 게이트웨이 사용자 가이드
  • WTON 게이트웨이를 통해 톤 래핑(wrapping) 시 랩트톤으로 전환되고, 언랩(unwrap) 기능 활용 시, 다시 TON으로 변환 가능
  • TON 블록체인 지원 지갑: TON Wallet, Tonhub (추후 Tonkeeper, Tonic, OpenMask, Coin98 Wallet 지원 예정)
 

오지스는 수년간 다양한 블록체인 프로젝트와 긴밀히 협력해 유기적 블록체인 기술을 축적했고, 인프라도 구축했습니다. 지금까지 쌓은 경험과 노하우를 바탕으로 메가톤 파이낸스와 WTON 게이트웨이를 출시했습니다. WTON 게이트웨이는 기존 톤 블록체인에서 활용성이 부족했던 톤을 사용할 수 있게 함으로써 사용자, 재단, 다양한 디파이 프로토콜과 메가톤 파이낸스 간 연결고리 역할을 수행할 것입니다. 톤 블록체인 연결로 7억명의 텔레그램 유저를 품고, 나아가 국경의 경계 없이(Borderless) 전 세계 사용자를 포용하는 디파이 프로토콜로 성장할 메가톤 파이낸스의 미래를 기대 바랍니다. 여러분의 변함없는 관심과 지속적인 성원을 부탁드립니다.

 

메가톤 파이낸스

 

팀 & 제품

 

https://medium.com/megatonfinance/wton-%EA%B2%8C%EC%9D%B4%ED%8A%B8%EC%9B%A8%EC%9D%B4-%EC%B6%9C%EC%8B%9C-22a3f3d69666

 

WTON 게이트웨이 출시

메가톤 파이낸스 커뮤니티 여러분 안녕하세요.

medium.com

 

텔레그램 톤 네트워크 검증자, 온체인 거래 없는 비활성 주소 동결 투표 - 토큰포스트

사진 = shutterstock

텔레그램의 톤(TON, 디오픈네트워크) 네트워크 검증자들이 거버넌스 투표를 진행할 것으로 전망된다.

24일(현지시간) 텔레그램의 톤 네트워크 검증자들이 초기 유통 기여자들 중 온체인 거래를 한 적이 없는 195개 장기 비활성 주소를 향후 4년간 동결하는 방안에 대한 거버넌스 투표를 진행한다.

해당 주소들은 현재 약 25억 달러(한화 약 3조875억원) 상당의 10억8000만개 TON을 보유하고 있다. 이는 TON 유통량의 21.3% 규모다.

해당 제안이 통과되려면 검증자 중 최소 75%가 여러 차례로 나눠 진행되는 투표에 참여해야 한다. 또 제안 통과 시 동결 대상 주소들은 4년간 아무런 거래도 할 수 없으며, 퍼블릭 체인 상에서 동결 주소 목록을 상시 확인 가능하다.

이와 관련 톤코인 재단은 "해당 제안은 TON 커뮤니티의 투명성을 증명하기 위함"이라며 "해당 지갑들의 동결을 통해 TON 유통량을 보다 투명하게 공개할 수 있다"고 설명했다.

한편, 지난 5일 톤 재단이 데이터 스토리지 시장에 진출한 것으로 나타났다.

톤 재단은 자체 개발 데이터 스토리지 솔루션 '톤 스토리지'(TON Storage)을 출시해 TON 코인을 인센티브로 제공하는 데이터 스토리지 프로젝트를 추진한다.

사용자의 데이터를 분산해 보관하는 노드 운영자들은 스마트 컨트랙트를 통해 TON 코인을 보상으로 지급받을 수 있으며, 이를 통해 사용자는 사실상 영구적으로 데이터를 저장할 수 있다는 게 톤 재단 측의 설명이다.

gerrard@tokenpost.kr

https://www.tokenpost.kr/article-120358

 

텔레그램 톤 네트워크 검증자, 온체인 거래 없는 비활성 주소 동결 투표 - 토큰포스트

텔레그램의 톤(TON, 디오픈네트워크) 네트워크 검증자들이 거버넌스 투표를 진행할 것으로 전망된다.24일(현지시간) 텔레그램의 톤 네트워크 검증자들이 초기 유통 기여자들 중 온체인 거래를 한

www.tokenpost.kr

 

+ Recent posts