Skip to content

나인 크로니클의 블록체인 상태를 변경 하는 방법은 트랜젝션을 발행하는 것입니다.

트랜젝션(Transaction)

Libplanet의 트랜젝션은 블록체인 네트워크에서 상태를 변경하는 액션을 포함하고 있으며, 나인 크로니클에서는 하나의 트랜젝션에 하나의 액션을 담아서 발행합니다.[1]

액션(Action)

액션은 상태를 변경하기 위해 필요한 인자들과 실제로 상태를 변경시키는 메서드를 포함하며, 나인 크로니클에는 많은 종류의 액션들이 정의되어 있습니다.[2]

꿀술(Mead)

꿀술은 액션을 실행하기 위해서 필요한 기본적인 통화입니다. 이 통화를 얻는 방법은 바로 서약 시스템을 이용하는 것인데요. 자세한 내용은 이 문서를 확인하세요.

잔액 조회:

cs
public FungibleAssetValue? GetMead(IWorld world, Address address)
{
    CurrencyAccount currencyAccount = world.GetCurrencyAccount(currency);
    return currencyAccount.GetBalance(address, currency);
    // or
    Currency currency = Currencies.Mead;
    return world.GetBalance(address, currency);
}

액션 포인트(Action Point)

몇몇 액션을 실행하기 위해서는 액션 포인트라는 자원이 필요합니다. 이 포인트는 아바타 생성과 동시에 최대치인 120[3]을 갖게 되고, 이후에는 순찰 보상이나 AP 포션[4] 등을 통해서 얻을 수 있습니다.

상태 조회:

cs
public int? GetActionPoint(IWorld world, Address address)
{
    IAccount account = world.GetAccount(Addresses.ActionPoint);
    if (account is null)
    {
        return null;
    }

    IValue state = account.GetState(address);
    return state switch
    {
        Bencodex.Types.Integer i => i,
        _ => null,
    };
}

  1. Lib9cNekoyume.Blockchain.Policy.BlockPolicySource.ValidateNextBlockTxRaw 메서드에서는 한 트랜젝션에 하나의 액션만 포함하는 것을 검사하고 있습니다. ↩︎

  2. Lib9cNekoyume.Action 네임스페이스에 정의되어 있는 액션들을 확인하세요. ↩︎

  3. 액션 포인트의 최대치는 Nekoyume.Action.DailyReward.ActionPointMax120으로 정의되어 있습니다. ↩︎

  4. AP을 최대치만큼 채워주는 아이템입니다. ↩︎