پرش به محتوای اصلی

قالب‌ها و نمونه‌های ارزهای دیجیتال

قالب‌های کاربردی Beancount و نمونه‌های واقعی برای سناریوهای رایج ارزهای دیجیتال شامل معامله، استخراج، سهام‌گذاری، ایردراپ و فعالیت‌های دیفای.

این راهنما قالب‌های کاربردی Beancount و نمونه‌های واقعی را برای سناریوهای رایج ارزهای دیجیتال فراهم می‌کند. این قالب‌ها را برای نیازهای حسابداری ارز دیجیتال خود کپی و تطبیق دهید.

نحوه خواندن این بلوک‌ها

هر بلوک محصور شده در زیر یکی از سه نوع است و قابل جایگزینی با یکدیگر نیستند:

  • قالب‌ها شامل مکان‌نماهای [براکت‌دار] و تاریخ‌های YYYY-MM-DD هستند. تا زمانی که مقادیر واقعی را جایگزین نکنید، بارگذاری نمی‌شوند — براکت‌ها نحو Beancount نیستند.
  • نمونه‌ها مستقیماً زیر قالب خود قرار دارند، تاریخ‌ها و مقادیر واقعی دارند و برای بارگذاری نوشته شده‌اند. هر یک از آنها همچنان نیاز دارد که حساب‌هایی که لمس می‌کند باز باشند، که قالب ساختار حساب در زیر برای آن است. تنها استثنا بلوک تطبیق است که موجودی‌هایی را تأیید می‌کند که فقط دفتر کل خود شما می‌تواند برآورده کند.
  • بلوک آربیتراژ وام فلش شبه‌کد است و در جایی که ظاهر می‌شود برچسب‌گذاری شده است.

دو قرارداد در تمام آنها جاری است:

  • حساب‌های درآمد اعتبار دارند، بنابراین منفی هستند. سود تحقق‌یافته یک ثبت منفی در Income:CapitalGains:… است؛ زیان تحقق‌یافته یک ثبت مثبت در Expenses:CapitalLoss:… است. برعکس کردن این موضوع رایج‌ترین راهی است که یک ورودی ارز دیجیتال در تراز کردن شکست می‌خورد.
  • کارمزد یک بار به عنوان هزینه و یک بار به عنوان کاهش وجه نقد ثبت می‌شود. درآمد ناخالص به حساب نقدی می‌رود، کارمزد از آن خارج می‌شود و تفاوت آن چیزی است که در واقع در حساب شما قرار می‌گیرد.

یک دفتر کل نمونه زنده ارز دیجیتال را کاوش کنید:

باز کردن دفتر کل نمونه ارز دیجیتال در برگه جدید

قالب راه‌اندازی پایه

قالب ساختار حساب

; =============================================================================
; CRYPTOCURRENCY ACCOUNT SETUP TEMPLATE
; =============================================================================
 
; Bank Accounts
1970-01-01 open Assets:Checking
 
; Exchange Accounts
1970-01-01 open Assets:Crypto:Coinbase:USD
1970-01-01 open Assets:Crypto:Coinbase:BTC
1970-01-01 open Assets:Crypto:Coinbase:ETH
1970-01-01 open Assets:Crypto:Binance:USD
1970-01-01 open Assets:Crypto:Binance:BTC
1970-01-01 open Assets:Crypto:Binance:ETH
1970-01-01 open Assets:Crypto:Binance:BNB
1970-01-01 open Assets:Crypto:Binance:ADA
 
; On-Chain and Mining Accounts
1970-01-01 open Assets:Crypto:Ethereum:ETH
1970-01-01 open Assets:Crypto:Polygon:ETH
1970-01-01 open Assets:Crypto:Mining:BTC
 
; Wallet Accounts
1970-01-01 open Assets:Crypto:Wallet:Ledger:BTC
1970-01-01 open Assets:Crypto:Wallet:Ledger:ETH
1970-01-01 open Assets:Crypto:Wallet:MetaMask:ETH
1970-01-01 open Assets:Crypto:Wallet:MetaMask:USDC
1970-01-01 open Assets:Crypto:Wallet:MetaMask:UNI
 
; DeFi Protocol Accounts
1970-01-01 open Assets:DeFi:Uniswap:ETH-USDC-LP
1970-01-01 open Assets:DeFi:Compound:CUSDC
1970-01-01 open Assets:Staking:Ethereum:ETH
 
; Income Accounts
1970-01-01 open Income:Crypto:Staking:ETH
1970-01-01 open Income:Crypto:Mining:BTC
1970-01-01 open Income:Crypto:Airdrops
1970-01-01 open Income:Crypto:DeFi:Yield
1970-01-01 open Income:CapitalGains:Crypto
1970-01-01 open Income:CapitalGains:LongTerm
 
; Expense Accounts
1970-01-01 open Expenses:Crypto:Fees:Trading
1970-01-01 open Expenses:Crypto:Fees:Network
1970-01-01 open Expenses:Crypto:Fees:Withdrawal
1970-01-01 open Expenses:Crypto:Bridge:Fees
1970-01-01 open Expenses:Crypto:Mining:Electricity
1970-01-01 open Expenses:CapitalLoss:Crypto
 
; Commodity Definitions
1970-01-01 commodity BTC
  name: "Bitcoin"
  asset-class: "cryptocurrency"
 
1970-01-01 commodity ETH
  name: "Ethereum"
  asset-class: "cryptocurrency"
 
1970-01-01 commodity USDC
  name: "USD Coin"
  asset-class: "stablecoin"
 
; Compound writes this receipt token "cUSDC", but a Beancount commodity
; and every account component must start with a capital letter or a digit,
; so the ledger spells it CUSDC and keeps the display name in metadata.
1970-01-01 commodity CUSDC
  name: "cUSDC (Compound USD Coin)"
  asset-class: "defi-receipt"

قالب‌های معامله

خرید پایه ارز دیجیتال

; Template: Buy cryptocurrency on exchange
YYYY-MM-DD * "Buy [AMOUNT] [CRYPTO] on [EXCHANGE]"
  Assets:Crypto:[EXCHANGE]:[CRYPTO]     [AMOUNT] [CRYPTO] {[PRICE] USD}
  Assets:Crypto:[EXCHANGE]:USD         -[TOTAL_COST] USD
  Expenses:Crypto:Fees:Trading          [FEE] USD
  Assets:Crypto:[EXCHANGE]:USD         -[FEE] USD
 
; Example: Buy 1 BTC on Coinbase
2024-01-15 * "Buy 1 BTC on Coinbase"
  Assets:Crypto:Coinbase:BTC      1.0 BTC {45000.00 USD}
  Assets:Crypto:Coinbase:USD  -45000.00 USD
  Expenses:Crypto:Fees:Trading    50.00 USD
  Assets:Crypto:Coinbase:USD     -50.00 USD

فروش ارز دیجیتال

; Template: Sell cryptocurrency on exchange
YYYY-MM-DD * "Sell [AMOUNT] [CRYPTO] on [EXCHANGE]"
  Assets:Crypto:[EXCHANGE]:[CRYPTO]    -[AMOUNT] [CRYPTO] {[COST_BASIS] USD} @ [SALE_PRICE] USD
  Assets:Crypto:[EXCHANGE]:USD          [GROSS_PROCEEDS] USD
  Expenses:Crypto:Fees:Trading          [FEE] USD
  Assets:Crypto:[EXCHANGE]:USD         -[FEE] USD
  Income:CapitalGains:Crypto           -[GAIN] USD  ; a loss is a positive Expenses:CapitalLoss:Crypto instead
 
; Example: Sell 0.5 BTC with a gain
2024-03-20 * "Sell 0.5 BTC on Coinbase"
  Assets:Crypto:Coinbase:BTC     -0.5 BTC {45000.00 USD} @ 48000.00 USD
  Assets:Crypto:Coinbase:USD   24000.00 USD  ; gross proceeds, 0.5 * 48,000.00
  Expenses:Crypto:Fees:Trading    30.00 USD
  Assets:Crypto:Coinbase:USD     -30.00 USD  ; the fee leaves the same cash account
  Income:CapitalGains:Crypto   -1500.00 USD  ; 24,000.00 proceeds - 22,500.00 basis

لطیفه واگذار شده به قیمت تمام‌شده ۲۲,۵۰۰.۰۰ دلار است، فروش ۲۴,۰۰۰.۰۰ دلار ناخالص به ارمغان می‌آورد و ۳۰.۰۰ دلار از آن به صرافی می‌رسد — بنابراین ۲۳,۹۷۰.۰۰ دلار وجه نقد می‌رسد و ۱,۵۰۰.۰۰ دلار سود تحقق می‌یابد. کارمزد را در سود خالص نکنید: کارمزد قبلاً یک هزینه است و کم کردن آن برای بار دوم چیزی است که تراکنش را نامتوازن می‌کند.

معامله ارز به ارز

; Template: Trade one crypto for another
YYYY-MM-DD * "Trade [AMOUNT1] [CRYPTO1] for [AMOUNT2] [CRYPTO2]"
  Assets:Crypto:[EXCHANGE]:[CRYPTO1]   -[AMOUNT1] [CRYPTO1] {[COST_BASIS] USD}
  Assets:Crypto:[EXCHANGE]:[CRYPTO2]    [AMOUNT2] [CRYPTO2] {[NEW_PRICE] USD}
  Income:CapitalGains:Crypto           -[GAIN] USD  ; taxable event; a loss is a positive Expenses:CapitalLoss:Crypto
  Expenses:Crypto:Fees:Trading          [FEE] USD
  Assets:Crypto:[EXCHANGE]:USD         -[FEE] USD
 
; Example: Trade BTC for ETH
2024-02-10 * "Trade 1 BTC for 20 ETH on Binance"
  Assets:Crypto:Binance:BTC     -1.0 BTC {46000.00 USD}
  Assets:Crypto:Binance:ETH      20 ETH {2400.00 USD}
  Income:CapitalGains:Crypto  -2000.00 USD  ; 48,000.00 received - 46,000.00 basis
  Expenses:Crypto:Fees:Trading    40.00 USD
  Assets:Crypto:Binance:USD      -40.00 USD

معامله ارز به ارز اولین کالا را واگذار می‌کند، بنابراین دقیقاً مانند فروش به نقد، سود تحقق می‌یابد: ۲۰ اتریوم به دست آمده با ۲,۴۰۰.۰۰ دلار، ۴۸,۰۰۰.۰۰ دلار ارزش دریافت شده در برابر ۴۶,۰۰۰.۰۰ دلار مبنای بیت‌کوین است. کارمزد ۴۰.۰۰ دلار به صورت نقدی پرداخت می‌شود و سود را تغییر نمی‌دهد.

قالب‌های انتقال

انتقال از صرافی به کیف پول

; Template: Transfer crypto from exchange to wallet
YYYY-MM-DD * "Transfer [AMOUNT] [CRYPTO] from [EXCHANGE] to [WALLET]"
  Assets:Crypto:[EXCHANGE]:[CRYPTO]      -[AMOUNT] [CRYPTO] {[COST_BASIS] USD}
  Assets:Crypto:Wallet:[WALLET]:[CRYPTO]  [AMOUNT] [CRYPTO] {[COST_BASIS] USD}
  Expenses:Crypto:Fees:Withdrawal         [FEE] [CRYPTO] {[COST_BASIS] USD}
  Assets:Crypto:[EXCHANGE]:[CRYPTO]      -[FEE] [CRYPTO] {[COST_BASIS] USD}
 
; Example: Transfer BTC to Ledger
2024-01-20 * "Transfer 1 BTC from Coinbase to Ledger"
  Assets:Crypto:Coinbase:BTC      -1.0 BTC {45000.00 USD}
  Assets:Crypto:Wallet:Ledger:BTC  1.0 BTC {45000.00 USD}
  Expenses:Crypto:Fees:Withdrawal  0.0005 BTC {45000.00 USD}
  Assets:Crypto:Coinbase:BTC      -0.0005 BTC {45000.00 USD}

انتقال واگذاری نیست، بنابراین چیزی تحقق نمی‌یابد: همان هزینه {45000.00 USD} با سکه‌ها سفر می‌کند و حساب دریافت‌کننده مبنا را به ارث می‌برد. دو پیامد به دنبال دارد. کارمزد برداشت به بیت‌کوین پرداخت می‌شود و با همان هزینه هزینه می‌شود، بنابراین آن نیز سودی تحقق نمی‌دهد — اگر رویه شما چیز دیگری می‌گوید، کارمزد را با @ قیمت‌گذاری کنید و یک ثبت سود اضافه کنید. و حساب ارسال‌کننده باید از قبل 1.0005 بیت‌کوین با همان هزینه دقیق داشته باشد، نه 1.0، زیرا کارمزد از همان لطیفه خارج می‌شود. کاهش بدون لطیفه منطبق، حتی اگر مجموع‌ها درست باشند، ثبت نمی‌شود.

انتقال بین صرافی‌ها

; Template: Transfer between exchanges
YYYY-MM-DD * "Transfer [AMOUNT] [CRYPTO] from [EXCHANGE1] to [EXCHANGE2]"
  Assets:Crypto:[EXCHANGE1]:[CRYPTO]  -[AMOUNT] [CRYPTO] {[COST_BASIS] USD}
  Assets:Crypto:[EXCHANGE2]:[CRYPTO]   [AMOUNT] [CRYPTO] {[COST_BASIS] USD}
  Expenses:Crypto:Fees:Network         [FEE] [CRYPTO] {[COST_BASIS] USD}
  Assets:Crypto:[EXCHANGE1]:[CRYPTO]  -[FEE] [CRYPTO] {[COST_BASIS] USD}
 
; Example: Transfer ETH from Coinbase to Binance
2024-02-05 * "Transfer 10 ETH from Coinbase to Binance"
  Assets:Crypto:Coinbase:ETH   -10 ETH {2500.00 USD}
  Assets:Crypto:Binance:ETH     10 ETH {2500.00 USD}
  Expenses:Crypto:Fees:Network  0.01 ETH {2500.00 USD}
  Assets:Crypto:Coinbase:ETH   -0.01 ETH {2500.00 USD}

قالب‌های سهام‌گذاری

سهام‌گذاری اتریوم

; Template: Stake ETH
YYYY-MM-DD * "Stake [AMOUNT] ETH"
  Assets:Crypto:Wallet:MetaMask:ETH    -[AMOUNT] ETH {[PRICE] USD}
  Assets:Staking:Ethereum:ETH           [AMOUNT] ETH {[PRICE] USD}
  Expenses:Crypto:Fees:Network          [FEE] ETH {[PRICE] USD}
  Assets:Crypto:Wallet:MetaMask:ETH    -[FEE] ETH {[PRICE] USD}
 
; Example: Stake 32 ETH
2024-01-10 * "Stake 32 ETH on Ethereum 2.0"
  Assets:Crypto:Wallet:MetaMask:ETH    -32 ETH {2500.00 USD}
  Assets:Staking:Ethereum:ETH           32 ETH {2500.00 USD}
  Expenses:Crypto:Fees:Network          0.01 ETH {2500.00 USD}
  Assets:Crypto:Wallet:MetaMask:ETH    -0.01 ETH {2500.00 USD}

پاداش سهام‌گذاری

; Template: Receive staking rewards
YYYY-MM-DD * "[CRYPTO] Staking Rewards - [PERIOD]"
  Assets:Staking:[PROTOCOL]:[CRYPTO]    [AMOUNT] [CRYPTO] {[PRICE] USD}
  Income:Crypto:Staking:[CRYPTO]       -[VALUE] USD  ; [VALUE] = [AMOUNT] * [PRICE]
 
; Example: ETH staking rewards
2024-02-01 * "ETH Staking Rewards - January"
  Assets:Staking:Ethereum:ETH     0.08 ETH {2600.00 USD}
  Income:Crypto:Staking:ETH     -208.00 USD  ; 0.08 * 2,600.00

پاداش درآمدی است که به صورت غیرنقدی دریافت می‌شود، بنابراین دو ثبت همان رویداد را از هر دو طرف توصیف می‌کنند: ۰.۰۸ اتریوم با مبنای ۲,۶۰۰.۰۰ دلار در هر واحد می‌رسد و درآمد منطبق ۲۰۸.۰۰ دلار یک اعتبار است — منفی. {2,600.00 USD} قیمت خارجی است که باید خودتان تهیه کنید؛ Beancount آن را ثبت می‌کند، آن را واکشی نمی‌کند. آن را از صرافی یا شاخصی که واقعاً استفاده می‌کنید یادداشت کنید و همان منبع را در طول سال حفظ کنید.

آن ۲۰۸.۰۰ دلار همچنین مبنای هزینه پاداش از این پس است. وقتی در نهایت ۰.۰۸ اتریوم را می‌فروشید، فقط حرکت از این تاریخ به بعد سود است — ۲۰۸.۰۰ دلار قبلاً به عنوان درآمد مالیات گرفته شده است و نباید دو بار شناسایی شود. اینکه آیا درآمد در زمان دریافت یا واگذاری مشمول مالیات است بسته به حوزه قضایی متفاوت است؛ دفتر کل در هر صورت واقعیت‌ها را ثبت می‌کند.

قالب‌های دیفای

تأمین نقدینگی یونی‌سواپ

; Template: Add liquidity to Uniswap pool
YYYY-MM-DD * "Add liquidity to [TOKEN1]-[TOKEN2] pool"
  Assets:Crypto:Wallet:MetaMask:[TOKEN1]    -[AMOUNT1] [TOKEN1] {[PRICE1] USD}
  Assets:Crypto:Wallet:MetaMask:[TOKEN2]    -[AMOUNT2] [TOKEN2] {[PRICE2] USD}
  Assets:DeFi:Uniswap:[TOKEN1]-[TOKEN2]-LP   [LP_AMOUNT] [LP_TOKEN] {[LP_PRICE] USD}
  Expenses:Crypto:Fees:Network               [FEE] ETH {[ETH_PRICE] USD}
  Assets:Crypto:Wallet:MetaMask:ETH         -[FEE] ETH {[ETH_PRICE] USD}
 
; Example: Add ETH-USDC liquidity
2024-01-15 * "Add liquidity to ETH-USDC pool"
  Assets:Crypto:Wallet:MetaMask:ETH     -10 ETH {2500.00 USD}
  Assets:Crypto:Wallet:MetaMask:USDC  -25000 USDC @ 1.00 USD
  Assets:DeFi:Uniswap:ETH-USDC-LP        100 UNI-V3-ETH-USDC {500.00 USD}
  Expenses:Crypto:Fees:Network          0.02 ETH {2500.00 USD}
  Assets:Crypto:Wallet:MetaMask:ETH    -0.02 ETH {2500.00 USD}

این یکی را کالا به کالا تطبیق دهید: ۲۵,۰۰۰.۰۰ دلار اتریوم به اضافه ۲۵,۰۰۰.۰۰ دلار USDC خارج می‌شود، ۵۰,۰۰۰.۰۰ دلار توکن LP می‌رسد و کارمزد گاز ۵۰.۰۰ دلار اتریوم را از کیف پول به هزینه منتقل می‌کند. پایه سکه پایدار @ 1.00 USD را حمل می‌کند زیرا بدون مبنای هزینه نگهداری می‌شود — بدون حاشیه قیمت، وزن آن ۲۵,۰۰۰ USDC است که نمی‌تواند دلار را خنثی کند. در بسیاری از حوزه‌های قضایی سپرده‌گذاری در استخر به خودی خود واگذاری هر دو توکن است؛ این ورودی عمداً مبنا را در سراسر آن حمل می‌کند، بنابراین اگر رویه شما آنها را ایجاب می‌کند، ثبت‌های سود را اضافه کنید.

وام‌دهی کامپاند

; Template: Supply assets to Compound
YYYY-MM-DD * "Supply [AMOUNT] [TOKEN] to Compound"
  Assets:Crypto:Wallet:MetaMask:[TOKEN]  -[AMOUNT] [TOKEN] @ [TOKEN_PRICE] USD
  Assets:DeFi:Compound:C[TOKEN]           [C_AMOUNT] C[TOKEN] {[C_PRICE] USD}
  Expenses:Crypto:Fees:Network            [FEE] ETH {[ETH_PRICE] USD}
  Assets:Crypto:Wallet:MetaMask:ETH      -[FEE] ETH {[ETH_PRICE] USD}
 
; Example: Supply USDC to Compound
2024-01-20 * "Supply 10000 USDC to Compound"
  Assets:Crypto:Wallet:MetaMask:USDC  -10000 USDC @ 1.00 USD
  Assets:DeFi:Compound:CUSDC             500 CUSDC {20.00 USD}
  Expenses:Crypto:Fees:Network          0.008 ETH {2500.00 USD}
  Assets:Crypto:Wallet:MetaMask:ETH    -0.008 ETH {2500.00 USD}

دو چیز باعث می‌شود این یکی بارگذاری شود. پایه USDC @ 1.00 USD را حمل می‌کند تا هر دو طرف مبادله در یک ارز وزن داشته باشند — بدون آن Beancount ۱۰,۰۰۰.۰۰ دلار CUSDC را در برابر ۱۰,۰۰۰ واحد USDC در حال ناپدید شدن می‌بیند که کالاهای متفاوتی هستند و خنثی نمی‌شوند. و توکن رسید CUSDC است، نه cUSDC: حرف اول کوچک در هر دو جزء حساب و نماد کالا یک خطای lexer است، مهم نیست پروتکل آن را در رابط خود چگونه می‌نویسد.

قالب‌های استخراج

پاداش استخراج

; Template: Receive mining rewards
YYYY-MM-DD * "[CRYPTO] Mining Reward - [POOL/SOLO]"
  Assets:Crypto:Mining:[CRYPTO]     [AMOUNT] [CRYPTO] {[PRICE] USD}
  Income:Crypto:Mining:[CRYPTO]    -[VALUE] USD  ; [VALUE] = [AMOUNT] * [PRICE]
 
; Example: Bitcoin mining reward
2024-01-15 * "BTC Mining Reward - Slush Pool"
  Assets:Crypto:Mining:BTC    0.01 BTC {45000.00 USD}
  Income:Crypto:Mining:BTC  -450.00 USD  ; 0.01 * 45,000.00

هزینه‌های استخراج

; Template: Mining operational expenses
YYYY-MM-DD * "Mining [EXPENSE_TYPE] - [PERIOD]"
  Expenses:Crypto:Mining:[EXPENSE_TYPE]  [AMOUNT] USD
  Assets:Checking                       -[AMOUNT] USD
 
; Example: Mining electricity costs
2024-01-31 * "Mining Electricity - January"
  Expenses:Crypto:Mining:Electricity  800.00 USD
  Assets:Checking                    -800.00 USD

قالب‌های ایردراپ

ایردراپ توکن

; Template: Receive token airdrop
YYYY-MM-DD * "[TOKEN] Airdrop from [PROJECT]"
  Assets:Crypto:Wallet:[WALLET]:[TOKEN]  [AMOUNT] [TOKEN] {[PRICE] USD}
  Income:Crypto:Airdrops                -[VALUE] USD  ; [VALUE] = [AMOUNT] * [PRICE]
 
; Example: UNI token airdrop
2024-03-01 * "UNI Airdrop from Uniswap"
  Assets:Crypto:Wallet:MetaMask:UNI   400 UNI {8.00 USD}
  Income:Crypto:Airdrops            -3200.00 USD  ; 400 * 8.00

مانند پاداش سهام‌گذاری، ارزش شناسایی‌شده ایردراپ مبنای هزینه آن می‌شود. قیمتی را که می‌توانید از آن دفاع کنید ثبت کنید — اولین قیمت نقدشونده توکن، از منبعی که نام می‌برید — نه یک عدد گرد.

قالب‌های پیشرفته

آربیتراژ وام فلش

این بلوک شبه‌کد است، نه یک قالب. توالی حرکت‌های ارزش در داخل یک وام فلش را ترسیم می‌کند. حتی پس از جایگزینی مقادیر بارگذاری نمی‌شود، زیرا خطوط خالی بین گروه‌ها تراکنش را پایان می‌دهند — Beancount یک خطای نحوی در ثبت‌های بعدی گزارش می‌دهد. یک وام فلش واقعی را به عنوان یک تراکنش واحد بدون خطوط خالی ثبت کنید (برچسب‌گذاری پایه‌ها با کامنت‌های ; تورفته)، و پایه‌های میانی که در همان بلوک به صفر خالص می‌شوند را حذف کنید.

Pseudocode: flash loan arbitrage
 
  borrow      Assets:Crypto:Temp:FlashLoan       +[LOAN_AMOUNT] [TOKEN]
              Liabilities:DeFi:[PROTOCOL]:Flash  -[LOAN_AMOUNT] [TOKEN]
 
  execute     Assets:Crypto:Temp:FlashLoan       -[LOAN_AMOUNT] [TOKEN]
              Assets:Crypto:Temp:Arbitrage       +[RETURN_AMOUNT] [TOKEN]
 
  repay       Liabilities:DeFi:[PROTOCOL]:Flash  +[LOAN_AMOUNT] [TOKEN]
              Assets:Crypto:Temp:Arbitrage       -[LOAN_PLUS_FEE] [TOKEN]
 
  keep        Assets:Crypto:Wallet:[WALLET]:[TOKEN]  +[PROFIT] [TOKEN]
              Income:Crypto:Arbitrage                -[PROFIT_USD] USD

هر چیزی که وام لمس کرده تا پایان بلوک از بین رفته است، بنابراین چیزی که دفتر کل در واقع باید ثبت کند سود و کارمزد پروتکل است. مثال آربیتراژ در راهنمای ردیابی پرتفوی شکل تراکنش واحد را نشان می‌دهد.

پل بین زنجیره‌ای

; Template: Bridge assets across chains
YYYY-MM-DD * "Bridge [AMOUNT] [TOKEN] from [CHAIN1] to [CHAIN2]"
  Assets:Crypto:[CHAIN1]:[TOKEN]     -[AMOUNT] [TOKEN] {[PRICE] USD}
  Assets:Crypto:[CHAIN2]:[TOKEN]      [AMOUNT] [TOKEN] {[PRICE] USD}
  Expenses:Crypto:Bridge:Fees         [FEE] [TOKEN] {[PRICE] USD}
  Assets:Crypto:[CHAIN1]:[TOKEN]     -[FEE] [TOKEN] {[PRICE] USD}
 
; Example: Bridge ETH to Polygon
2024-02-05 * "Bridge 5 ETH from Ethereum to Polygon"
  Assets:Crypto:Ethereum:ETH     -5 ETH {2600.00 USD}
  Assets:Crypto:Polygon:ETH       5 ETH {2600.00 USD}
  Expenses:Crypto:Bridge:Fees    0.01 ETH {2600.00 USD}
  Assets:Crypto:Ethereum:ETH    -0.01 ETH {2600.00 USD}

قالب‌های بهینه‌سازی مالیاتی

برداشت زیان مالیاتی

; Template: Tax loss harvesting
YYYY-MM-DD * "Tax loss harvesting - Sell [CRYPTO] at loss"
  Assets:Crypto:[EXCHANGE]:[CRYPTO]    -[AMOUNT] [CRYPTO] {[HIGH_COST_BASIS] USD}
  Assets:Crypto:[EXCHANGE]:USD          [PROCEEDS] USD
  Expenses:Crypto:Fees:Trading          [FEE] USD
  Assets:Crypto:[EXCHANGE]:USD         -[FEE] USD
  Expenses:CapitalLoss:Crypto           [LOSS] USD
 
; Example: Harvest ADA loss
2024-12-15 * "Tax loss harvesting - Sell ADA at loss"
  Assets:Crypto:Binance:ADA      -1000 ADA {0.60 USD} @ 0.45 USD
  Assets:Crypto:Binance:USD       450.00 USD  ; gross proceeds, 1,000 * 0.45
  Expenses:Crypto:Fees:Trading      5.00 USD
  Assets:Crypto:Binance:USD        -5.00 USD
  Expenses:CapitalLoss:Crypto     150.00 USD  ; 600.00 basis - 450.00 proceeds

زیان تصویر آینه‌ای سود است: ۶۰۰.۰۰ دلار مبنا خارج می‌شود، ۴۵۰.۰۰ دلار درآمد ناخالص می‌رسد و تفاوت ۱۵۰.۰۰ دلار یک ثبت مثبت در حساب هزینه است. ۴۴۵.۰۰ دلار وجه نقد چیزی است که در واقع پس از کارمزد ۵.۰۰ دلار فرود می‌آید.

سود سرمایه بلندمدت

; Template: Long-term capital gains sale
YYYY-MM-DD * "Long-term sale - [CRYPTO] held > 1 year"
  date-acquired: "[PURCHASE_DATE]"
  holding-period: "[DAYS] days"
  Assets:Crypto:[EXCHANGE]:[CRYPTO]    -[AMOUNT] [CRYPTO] {[COST_BASIS] USD} @ [SALE_PRICE] USD
  Assets:Crypto:[EXCHANGE]:USD          [GROSS_PROCEEDS] USD
  Expenses:Crypto:Fees:Trading          [FEE] USD
  Assets:Crypto:[EXCHANGE]:USD         -[FEE] USD
  Income:CapitalGains:LongTerm         -[GAIN] USD
 
; Example: Long-term BTC sale
2025-02-01 * "Long-term sale - BTC held 382 days"
  date-acquired: "2024-01-15"
  holding-period: "382 days"
  Assets:Crypto:Coinbase:BTC     -1.0 BTC {45000.00 USD} @ 55000.00 USD
  Assets:Crypto:Coinbase:USD   55000.00 USD
  Expenses:Crypto:Fees:Trading    50.00 USD
  Assets:Crypto:Coinbase:USD     -50.00 USD
  Income:CapitalGains:LongTerm -10000.00 USD  ; 55,000.00 proceeds - 45,000.00 basis

سود ۱۰,۰۰۰.۰۰ دلار است، نه ۹,۹۵۰.۰۰ دلار: کارمزد ۵۰.۰۰ دلار قبلاً به عنوان هزینه ثبت شده است، بنابراین خالص کردن آن در سود، آن را دو بار کسر می‌کند. Income:CapitalGains:LongTerm یک حساب جداگانه از Income:CapitalGains:Crypto است فقط برای اینکه دوره نگهداری در گزارش قابل مشاهده باشد — Beancount دوره‌های نگهداری را برای شما محاسبه نمی‌کند، به همین دلیل است که فراداده‌های date-acquired و holding-period ارزش حمل کردن دارند.

قالب‌های تطبیق

تأیید موجودی ماهانه

; Template: Monthly balance assertions
YYYY-MM-DD balance Assets:Crypto:[EXCHANGE]:[CRYPTO]  [EXPECTED_BALANCE] [CRYPTO]
YYYY-MM-DD balance Assets:Crypto:Wallet:[WALLET]:[CRYPTO]  [EXPECTED_BALANCE] [CRYPTO]
 
; Example: January balance verification
2024-01-31 balance Assets:Crypto:Coinbase:BTC    2.5 BTC
2024-01-31 balance Assets:Crypto:Binance:ETH    15.0 ETH
2024-01-31 balance Assets:Crypto:Wallet:Ledger:BTC  1.0 BTC

برخلاف سایر نمونه‌های اینجا، این یکی به‌طور عمدی خودکفا نیست: مقادیر هر چیزی است که صفحه‌های صرافی خود شما می‌گویند و تأیید تا زمانی که تراکنش‌های شما در دفتر کل نباشند شکست می‌خورد — که کل هدف آن است. توجه داشته باشید که balance موجودی را در شروع روز نام‌گذاری‌شده بررسی می‌کند، بنابراین تأیید را در روز بعد از دوره‌ای که می‌بندید تاریخ‌گذاری کنید.

به‌روزرسانی قیمت

; Template: Daily price updates
YYYY-MM-DD price [CRYPTO] [PRICE] USD
 
; Example: Daily prices
2024-01-15 price BTC 45000.00 USD
2024-01-15 price ETH 2500.00 USD
2024-01-15 price ADA 0.50 USD

دستورالعمل‌های استفاده

  1. قالب مربوطه را کپی کنید برای نوع تراکنش خود

  2. هر مکان‌نما را جایگزین کنید. یک قالب Beancount معتبر نیست تا زمانی که YYYY-MM-DD و هر توکن [براکت‌دار] حذف شود — براکت‌ها نحو Beancount نیستند و باقی‌مانده یک خطای تجزیه است، نه یک مقدار نادیده‌گرفته‌شده. جایگزینی مکانیکی است:

    مکان‌نماجایگزین بامثال
    YYYY-MM-DDتاریخ تراکنش2024-03-20
    [مقدار]واحدهای کالا، بدون نقل‌قول0.5
    [ارز]نماد کالا، با حروف بزرگBTC
    [صرافی]جزء حساب برای مکانCoinbase
    [مبنای_هزینه]هزینه تک‌واحدی لطیفه‌ای که حذف می‌کنید45000.00
    [قیمت_فروش]قیمت تک‌واحدی که فروخته‌اید48000.00
    [درآمد_ناخالص][مقدار] × [قیمت_فروش]، قبل از کارمزد24000.00
    [کارمزد]کارمزد مکان، به ارزی که دریافت شده30.00
    [سود][درآمد_ناخالص][مقدار] × [مبنای_هزینه]1500.00

    جایگزینی آن ستون در قالب فروش ارز دیجیتال مثال کار شده چاپ‌شده در زیر آن را بازتولید می‌کند، که سریع‌ترین راه برای بررسی اینکه قالب را درست خوانده‌اید است.

  3. نام‌های حساب را تنظیم کنید تا با ساختار حساب شما مطابقت داشته باشد و مطمئن شوید که هر یک توسط قالب ساختار حساب باز شده است — حسابی که هرگز باز نشده یک خطای بارگذاری است، نه یک هشدار

  4. فراداده را در صورت نیاز اضافه کنید برای گزارش مالیات یا ردیابی

  5. محاسبات را تأیید کنید با bea --file your-file.bean check قبل از نهایی‌کردن ورودی‌ها. ورودی که تراز نمی‌شود، یا لطیفه‌ای را که ندارید کاهش می‌دهد، در آنجا شکست می‌خورد نه اینکه بی‌صدا یک گزارش اشتباه تولید کند

بهترین روش‌ها

  • از قراردادهای نام‌گذاری سازگار استفاده کنید
  • شناسه‌های تراکنش را در فراداده قرار دهید
  • تراکنش‌های پیچیده را به طور کامل مستند کنید
  • نرخ‌های ارز و قیمت‌ها را تأیید کنید
  • پشتیبان‌گیری منظم از فایل‌های خود را حفظ کنید

این قالب‌ها پایه محکمی برای حسابداری ارز دیجیتال در Beancount.io فراهم می‌کنند. آنها را بر اساس نیازها و الگوهای معاملاتی خاص خود سفارشی کنید.

منبع: https://beancount.io/fa/docs/Tips/cryptocurrency-templates-examples