Stepnの確定申告の計算。2022年分の計算した方法

 

毎年仮想通貨の確定申告は難しい。

いつもこれが正解だとはっきり示してくれるものが無いからだ。今の所。

Sptepnも可能であれば歩くたびに取得したGST,GMTを記録して、修理費用、レベルアップ費用、売却手数料、入手したNFTを記録してとやっていれば理論上後々計算可能である。

けれど、履歴をCSVでダウンロードできるわけでもないし、ブロックチェーン解析ソフトが提供されているわけでもない。

そもそもゲームなのであり、歩くたび、とか、ぶっちゃけ画面をタッチするたびにCSVに記録するのは不可能に近い。

イメージとして、昔からある多くの人が知っているゲームで言うと、シムシティなど街を作るゲームがちかいだろう。

そこでで何をやったか?災害がどの地区で起こったか?リセットボタンでやり直したか?等をいちいち別の紙に記録できるのか問題である。

私の場合、別でPixellLandなども試していて、こちらも似たような仕組みになっている。

PixelLandについては一瞬で購入した30枚くらいのNFTがカードの絵柄として開示されるわけで、それを記録するすべがない。

総じてNFTをどれほど保有しているか現在の物は当然わかっているけれど、履歴を追うのは至難になっている。

とはいえ、一定の論理をもって利益、損益を計算しないと思っていたため、ちょくちょく事あるごとに記録は残しておいた。

俯瞰してみると、概ね、というか、プレイしているうちにほぼ初期入金した金額で購入したNFTは売却して、ゲーム内で取得したNFTに置き換わっている。

初期入金した分はほぼ全額NFTを購入している。もちろんプレイにNFTが必要だからであり、当然NFT購入分以上に入金する気にはならなかった。

その後のプレイで、ほとんどの初期購入NFTは売却されており、その後取得NFTはプレイ中に入手したか、プレイ中で稼いだ仮想通貨で購入したものとなっている。

つまり、

初期投下分の仮想通貨額=経費。

プレイ中に取得したNFT=利益予定=保留分。

外部ウォレットに送金分=実現利益。

 

として見れないだろうか?

プレイ中に取得したNFTは売却額が不明である。極論無価値かもしれない。最近の暴落ぶりを見るとありえない話でもない。

ではプレイ中に稼いだ仮想通貨はどうなるのか?

これについては最終的にUSDCなどに変換して外部ウォレット(取引所)に送金している。

つまり、Stepn内にはゲームを円滑に進めるための小金程度しか意図的に残していない(怖くて大金を突っ込めるほど残しておきたくもない)

となると、上記の送金分を実現利益として申告しても間違いとは言えないのではないだろうか?

事あるごとに記録してあるCSVにはStepnに送金した時の額と、出金したときの額はマメに記録しておいた。

よってこれらを計算すれば利益、損益を計算することができるのではないか。

という事で、今回はこういう手順で確定申告をしようと思う。

付け加えて、何か大幅に計算違いだと税務署が言うのなら、それはそれで対応しないといけない。

この方法は意図的にStepn内の仮想通貨をほぼ無くしたり突っ込まれそうな個所を減らしているつもりだが、何ともすっきりしない方法でもあるだろう。あくまで私はこうするしかないんじゃないかと言うだけの話である。

 

 

OBSで画面ロックにならないことに対して対応。

ようはOBSが何かしていると画面ロックが無効になっていた。

つまりこんな状態だとスクリーンセイバーも画面ロックも動作しないようだ。

OSBの設定を見てもいまいちなにもできなかった。

仕方ないからpythonで対応。



C:\Windows\System32>powercfg -requests
DISPLAY:
[PROCESS] \Device\HarddiskVolume3\Program Files\obs-studio\bin\64bit\obs64.exe

SYSTEM:
[DRIVER] Senary Audio (HDAUDIO\FUNC_01&VEN_14F1&DEV_1F86&SUBSYS_17AA50D6&REV_1001\5&3a27c9f3&0&0001)
現在 1 つのオーディオ ストリームが使用中です。
[DRIVER] AMD Audio Device (ACP\VEN_1022&DEV_15E2&SUBSYS_17AA50D6\5&2bbff31f&0&04)
現在 1 つのオーディオ ストリームが使用中です。
[PROCESS] \Device\HarddiskVolume3\Program Files\obs-studio\bin\64bit\obs64.exe

AWAYMODE:
[PROCESS] \Device\HarddiskVolume3\Program Files\obs-studio\bin\64bit\obs64.exe

実行:
[PROCESS] \Device\HarddiskVolume3\Users\currentuser\AppData\Local\Programs\Opera\opera.exe
Playing audio

PERFBOOST:
なし。

ACTIVELOCKSCREEN:
なし。


C:\Windows\System32>


実行はcmdから。
start “” “pythonw” “scriptpath.py”

フロントには出てこないように python コマンドではない。

スクリプトは以下。



from pynput.mouse import Listener as MouseListener
import threading
import os
import time
from pystray import MenuItem as item
import pystray
from PIL import Image

def on_activate(icon, item):
    print(f"Activated: {item.text}")

def on_quit(icon, item):
    icon.stop()

# スクリプトのあるディレクトリを取得
current_dir = os.path.dirname(os.path.realpath(__file__))
icon_path = os.path.join(current_dir, 'check.ico')
icon_image = Image.open(icon_path)  # アイコン画像をロード

# アイコンをスタートする関数
def run_icon():
    icon.run()

# アイコンオブジェクトの作成
icon = pystray.Icon(
    name="Test Icon",
    icon=icon_image,
    title="Python Script Running",
    menu=pystray.Menu(
        item("Activate", on_activate),
        item("Quit", on_quit)
    )
)

# トレイアイコンを別スレッドで実行
icon_thread = threading.Thread(target=run_icon)
icon_thread.start()

# ロックするまでのアイドル時間(秒)
IDLE_TIME = 60  # 例: 60秒

# 最後にマウスが動いた時間を記録
last_move_time = time.time()

def on_move(x, y):
    global last_move_time
    last_move_time = time.time()

def check_idle():
    while True:
        time.sleep(10)  # 10秒ごとにチェック
        if time.time() - last_move_time > IDLE_TIME:
            print("System is idle. Locking the workstation.")
            os.system('rundll32.exe user32.dll,LockWorkStation')  # Windowsをロック

# マウスの監視を開始
mouse_listener = MouseListener(on_move=on_move)
mouse_listener.start()

# アイドル状態のチェックを別スレッドで実行
idle_thread = threading.Thread(target=check_idle)
idle_thread.start()

# スクリプトが終了しないようにメインスレッドを維持
mouse_listener.join()

 

要はアイコンで動作していることを通知している。