File size: 10,465 Bytes
0bead10
 
 
 
 
 
 
 
 
e859289
1355911
5b2006a
0bead10
 
 
6dc533b
 
 
0bead10
 
 
 
6394ab5
 
0bead10
 
 
 
 
 
6dc533b
0bead10
 
 
 
 
 
 
 
 
 
 
 
 
 
 
875b159
0bead10
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a00890c
0bead10
 
 
 
 
6394ab5
0bead10
6394ab5
0bead10
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cca8a6f
0bead10
 
 
 
 
cca8a6f
0bead10
f5b3458
0bead10
 
 
 
 
 
 
 
 
7a71ea9
0bead10
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
import pandas as pd
import requests
import streamlit as st
import streamlit_shadcn_ui as ui
import base64
import os


buy_data = [
    {"数量(个)": "250,000", "单价(CKB)": "1.1"},
    {"数量(个)": "200,000", "单价(CKB)": "1.05"},
    {"数量(个)": "100,000", "单价(CKB)": "1"},
    {"数量(个)": "60,000", "单价(CKB)": "0.5"},
    {"数量(个)": "630,000", "单价(CKB)": "0.2"},
    {"数量(个)": "1,100,000", "单价(CKB)": "0.1"},
    {"数量(个)": "", "单价(CKB)": ""},
    {"数量(个)": "", "单价(CKB)": ""},
    {"数量(个)": "", "单价(CKB)": ""},
    {"数量(个)": "", "单价(CKB)": ""}
]

sale_data = [
    {"数量(个)": "100,000", "单价(CKB)": "4"},
    {"数量(个)": "50,000", "单价(CKB)": "4.5"},
    {"数量(个)": "100,000", "单价(CKB)": "5"},
    {"数量(个)": "200,000", "单价(CKB)": "10"},
    {"数量(个)": "", "单价(CKB)": ""},
    {"数量(个)": "", "单价(CKB)": ""},
    {"数量(个)": "", "单价(CKB)": ""},
    {"数量(个)": "", "单价(CKB)": ""},
    {"数量(个)": "", "单价(CKB)": ""},
    {"数量(个)": "", "单价(CKB)": ""}
]

my_style = '''
<style>
    .tag {
        display: inline-block;
        padding: 2px 6px;
        background-color: #f2f2f2;  /* 默认的背景颜色 */
        border-radius: 5px;        /* 圆角效果 */
        margin: 0 2px;
        transition: background-color 0.3s;  /* 平滑的颜色过渡效果 */
    }

    .tag:hover {
        background-color: #83F14C;  /* 鼠标经过时的背景颜色 */
    }

    .tag:active {
        background-color: #cffd51;  /* 鼠标按下时的背景颜色 */
    }
</style>
'''


# 图片Base64
def image_to_base64(img_path):
    with open(img_path, "rb") as image_file:
        return base64.b64encode(image_file.read()).decode()


def get_ckb_price():
    params = {
        'account_no': 'ckb',
    }

    headers = {
        'authority': 'api.joy.id',
        'accept': 'application/json, text/plain, */*',
        'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8',
        'cache-control': 'no-cache',
        'dnt': '1',
        'origin': 'https://app.joy.id',
        'pragma': 'no-cache',
        'referer': 'https://app.joy.id/',
        'sec-ch-ua': '"Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120"',
        'sec-ch-ua-mobile': '?0',
        'sec-ch-ua-platform': '"macOS"',
        'sec-fetch-dest': 'empty',
        'sec-fetch-mode': 'cors',
        'sec-fetch-site': 'same-site',
        'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
    }

    try:
        response = requests.get(
            'https://api.joy.id/api/v1/wallet/accounts/ckb1qrgqep8saj8agswr30pls73hra28ry8jlnlc3ejzh3dl2ju7xxpjxqgqq878t5gcqw9gp3nf07lwz853ses6dxadhgef3vf0',
            params=params, headers=headers,
        )
        response.raise_for_status()
        print(response.json())
        data = response.json()
        if "accounts" in data and len(data["accounts"]) > 0 and "estimated_value" in data["accounts"][0]:
            return data["accounts"][0]["estimated_value"]
        else:
            return 0
    except requests.exceptions.RequestException as e:
        return 0


def get_memes_info():
    try:
        response = requests.get('https://api.omiga.io/api/v1/ckb_inscriptions/launchpad')
        if response.status_code != 200:
            return ["Error", "Error"]

        data = response.json()['data']['details']
        rebase_supply = data['rebase_supply'] // 100000000
        addresses_count = data['addresses_count']
        return [rebase_supply, addresses_count]

    except Exception as e:
        print("Exception occurred: ", e)
        return ["Error", "Error"]

st.set_page_config(page_title="Omiga - MEMES OTC", page_icon="👻", layout='centered', initial_sidebar_state='auto')


st.markdown(f'# <a href="https://ckb.meme" target="_self"><img src="data:image/jpeg;base64,{image_to_base64(os.path.join("img", "logo_ghost.png"))}" alt="Image" width="114px" height="36px" style="border-radius: 8px;"/></a> MEMES 场外交易', unsafe_allow_html=True)
st.subheader(' ', anchor=False, divider='gray')

st.markdown(f'{my_style}<span class="tag"><a href="https://omiga.io/" target="_blank" style="text-decoration: none;"><img src="data:image/jpeg;base64,{image_to_base64(os.path.join("img", "ghost.png"))}" alt="Image" width="20px" height="20px" style="border-radius: 3px;"/> Omiga</span></a> 是建立在 <span class="tag"><a href="https://nervos.org/" target="_blank" style="text-decoration: none;"><img src="data:image/jpeg;base64,{image_to_base64(os.path.join("img", "CKB.jpg"))}" alt="Image" width="20px" height="20px" style="border-radius: 3px;"/> Nervos CKB</span></a>(Common Knowledge Base)区块链上的一项创新性铭文协议。通过精心设计,旨在突破传统,为用户提供更公平、更高效的代币铸造和管理体验;<span class="tag"><a href="https://omiga.io/launchpad" target="_blank" style="text-decoration: none;"><img src="data:image/jpeg;base64,{image_to_base64(os.path.join("img", "memes.png"))}" alt="Image" width="20px" height="20px" style="border-radius: 3px;"/> MEMES</span></a> 是 CKB 链上 Omiga 协议第一个代币铭文。', unsafe_allow_html=True)

st.markdown(f'#### <img src="data:image/jpeg;base64,{image_to_base64(os.path.join("img", "memes.png"))}" alt="Image" width="32px" height="32px" style="border-radius: 8px;"/> $MEMES 基础信息', unsafe_allow_html=True)

data_info = get_memes_info()
ckb_price = get_ckb_price()
cols = st.columns(3)
with cols[0]:
    ui.metric_card(title="总供应量", content="21,000,000", description="理论上的最大供应量", key="card1")
with cols[1]:
    ui.metric_card(title="重铸进度", content=f"{data_info[0]:,}", description="当前重铸进度(流通量)", key="card2")
with cols[2]:
    ui.metric_card(title="持币地址", content=f"{data_info[1]:,}", description="当前持币的地址数量", key="card3")

cols = st.columns(3)
with cols[0]:
    ui.metric_card(title="最近成交价 (CKB)", content="4", description="场外交易最新价格", key="card4")
with cols[1]:
    ui.metric_card(title="总交易量 (CKB)", content="1,181,000", description="场外交易的总交易量", key="card5")
with cols[2]:
    ui.metric_card(title="预计市值 (USDT)", content=f"{(float(ckb_price) * int(data_info[0]) / 1000):,.0f}", description="当前预计的总市值", key="card6")

st.markdown("#### 订单信息")
orders = ui.tabs(options=['购买订单', '出售订单'], default_value='购买订单', key="orders")
if orders == "购买订单":
    buy_df = pd.DataFrame(buy_data)
    st.dataframe(buy_df, use_container_width=True, hide_index=True)
if orders == "出售订单":
    sale_df = pd.DataFrame(sale_data)
    st.dataframe(sale_df, use_container_width=True, hide_index=True)

chat = ui.tabs(options=['微信群聊', '电报私聊'], default_value='微信群聊', key="chat")
if chat == "微信群聊":
    st.markdown(f'<a href="https://weixin.qq.com/g/AwYAADKAzCELuHOyjDcdH61fczkeht0RZC8xc_Q6F5gqpNfL6uTNIRtGaUh4HC-Y" target="_blank"><img src="data:image/jpeg;base64,{image_to_base64(os.path.join("img", "wechat_qr.png"))}" alt="Image" style="max-width: 100%; width: 50%; height: auto; border-radius: 10px; display: block; box-shadow: 5px 5px 15px rgba(0,0,0,0.3);"/></a>', unsafe_allow_html=True)
if chat == "电报私聊":
    st.markdown(f'<a href="https://t.me/nervosckb" target="_blank"><img src="data:image/jpeg;base64,{image_to_base64(os.path.join("img", "telegram_qr.png"))}" alt="Image" style="max-width: 100%; width: 50%; height: auto; border-radius: 10px; display: block; box-shadow: 5px 5px 15px rgba(0,0,0,0.3);"/></a>', unsafe_allow_html=True)
st.markdown("#### OTC 流程")
st.markdown('''1. 交易双方协商并达成价格一致,交易在小群中进行;
2. 买家首先将相应的 CKB 转入担保账户;
3. 到账后,卖家将指定数量的 MEMES 转账给买家;
4. 最后,担保将买家的CKB支付给卖家,完成交易。
''')
st.markdown("#### OTC 费用")
st.markdown('''- 交易总额的 3% ,具体是买卖双方平分,所以每一方需支付 1.5%;
- 买家需承担 $MEMES 每次转账时附带的 144CKB 的费用。''')

st.markdown("#### 社交信息")

st.markdown(f'''<span class="tag"><a href="https://omiga.io" target="_blank" style="text-decoration: none;"><img src="data:image/jpeg;base64,{image_to_base64(os.path.join("img", "ghost.png"))}" alt="Image" width="20px" height="20px" style="border-radius: 3px;" /> omiga.io</span></a>
<span class="tag"><a href="https://x.com/OmigaHQ" target="_blank" style="text-decoration: none;"><img src="data:image/svg+xml;base64,{image_to_base64(os.path.join("img", "x.svg"))}" alt="Image" width="20px" height="20px" style="border-radius: 3px;" /> @OmigaHQ</span></a>
<span class="tag"><a href="https://t.me/omigackb" target="_blank" style="text-decoration: none;"><img src="data:image/svg+xml;base64,{image_to_base64(os.path.join("img", "telegram.svg"))}" alt="Image" width="20px" height="20px" style="border-radius: 3px;" /> @omigackb</span></a>

钱包推荐:<span class="tag"><a href="https://app.joy.id" target="_blank" style="text-decoration: none;"><img src="data:image/jpeg;base64,{image_to_base64(os.path.join("img", "joyid.jpg"))}" alt="Image" width="20px" height="20px" style="border-radius: 3px;" /> JoyID</span></a>

买入 $CKB 推荐:<span class="tag"><a href="https://binance.com" target="_blank" style="text-decoration: none;"><img src="data:image/jpeg;base64,{image_to_base64(os.path.join("img", "binance.jpg"))}" alt="Image" width="20px" height="20px" style="border-radius: 3px;" /> Binance</span></a> <span class="tag"><a href="https://htx.com" target="_blank" style="text-decoration: none;"><img src="data:image/jpeg;base64,{image_to_base64(os.path.join("img", "htx.jpg"))}" alt="Image" width="20px" height="20px" style="border-radius: 3px;" /> HTX</span></a> <span class="tag"><a href="https://kucoin.com" target="_blank" style="text-decoration: none;"><img src="data:image/jpeg;base64,{image_to_base64(os.path.join("img", "kucoin.jpg"))}" alt="Image" width="20px" height="20px" style="border-radius: 3px;" /> KuCoin</span></a>
''', unsafe_allow_html=True)