标签: cryptocurrency

在 Javascript 中计算大的小数(超过 15 位)

众所周知,Javascript 在计算十进制数方面存在一些问题(或功能)。例如:

console.log(0.1 + 0.2) // 0.30000000000000004
Run Code Online (Sandbox Code Playgroud)

我们知道我们可以使用不同的库来避免它(例如我使用bignumber.js),现在我们得到了预期的结果:

console.log(Number(new BigNumber(0.1).plus(0.2))); // 0.3
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/bignumber.js/6.0.0/bignumber.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

Bignumber.js 有局限性:

它接受数字类型的值(最多仅 15 位有效数字)、字符串或 BigNumber 对象。

我们可以传递一个字符串(这是可能的),但这样我们可能会丢失末尾的一些数字:

console.log(Number(new BigNumber(0.1).plus("198.43092534959501"))); // 198.530925349595, not 198.53092534959501
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/bignumber.js/6.0.0/bignumber.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

现在我使用加密货币,并且经常处理诸如 之类的数字198.43092534959501,在这种情况下我收到一个错误(如预期的那样):

console.log(Number(new BigNumber(0.1).plus(198.43092534959501))); // error
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/bignumber.js/6.0.0/bignumber.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

我知道有些人使用额外的乘数,但在上面提供的情况下它不起作用。如果您处理加密货币,您就会知道,我们实际上使用非相乘和相乘的值(例如4899649999990000000.489964999999)。但我现在的目标是对不同货币的所有法定余额求和,但它们有不同的乘数,所以我不能只对未相乘的值求和,而且看起来我需要以某种方式对相乘的值求和。

这是一个很小的背景,但我的一般问题是:

如何求和/乘法/等等。超过 15 位的十进制数?

javascript decimal cryptocurrency

4
推荐指数
1
解决办法
4866
查看次数

通过 WSS 连接到本地网络上运行的 Polkadot Full Noder 失败

我已经设置了一个在 192.168.2.254 的本地服务器上运行的完整节点。我只是想制作一个简单的脚本,基本上是订阅区块链上的新头。

\n
const { ApiPromise, WsProvider } = require(\'@polkadot/api\');\n\nasync function main () {\n  const wsProvider = new WsProvider(\'wss://192.168.2.254:9944\');\n  const api = await ApiPromise.create({ provider: wsProvider });\n\n  let count = 0;\n\n  const unsubscribe = await api.rpc.chain.subscribeNewHeads((header) => {\n    console.log(`Chain is at block: #${header.number}`);\n\n    if (++count === 256) {\n      unsubscribe();\n      process.exit(0);\n    }\n  });\n}\n\nmain().catch(console.error);\n
Run Code Online (Sandbox Code Playgroud)\n

在服务器上,我还按照 Polkadot wiki 的建议使用自签名 ssl 证书设置了 nginx。这是块配置:

\n
server {\n        server_name 192.168.2.254\n\n        root /var/www/html;\n        index index.html;\n\n        location / {\n                try_files $uri $uri/ =404;\n\n                proxy_pass http://localhost:9944;\n                proxy_set_header …
Run Code Online (Sandbox Code Playgroud)

blockchain cryptocurrency substrate polkadot-js polkadot

4
推荐指数
1
解决办法
1922
查看次数

如何使用 Python 通过 binance API 获取加密货币的所有价格历史记录?

我一直在使用此脚本通过 Binance API 和此脚本获取某些加密货币的价格: https://steemit.com/python/@marketstack/how-to-download-historical-price-data-from-binance-与Python

问题是,使用此脚本我无法控制日期范围:例如,我想选择 2015 年 12 月到 2020 年 12 月之间的期间范围,或者我想要任何加密货币第一天交易的每日价格...... ETC。

所以我与大家分享一下我正在使用的代码(从steemit代码复制并稍作修改)我该怎么做?

# https://steemit.com/python/@marketstack/how-to-download-historical-price-data-from-binance-with-python###

import requests 
import json 
import pandas as pd 
import numpy as np  
import datetime as dt  

frequency = input("Please enter the frequency (1m/5m/30m/.../1h/6h/1d/ :  ")

def get_bars(symbol, interval=frequency):
    root_url = 'https://api.binance.com/api/v1/klines'
    url = root_url + '?symbol=' + symbol + '&interval=' + interval
    data = json.loads(requests.get(url).text)
    df = pd.DataFrame(data)
    df.columns = ['open_time',
                  'o', 'h', 'l', 'c', 'v',
                  'close_time', 'qav', 'num_trades',
                  'taker_base_vol', 'taker_quote_vol', 'ignore'] …
Run Code Online (Sandbox Code Playgroud)

python api cryptocurrency binance

4
推荐指数
2
解决办法
5万
查看次数

Next.js 使用 getServerSideProps 如何将属性从页面传递到组件?

我正在尝试coingecko-api获取比特币的实时价格。我试图将 getServerSideProps 的返回属性传递给我的<CalculatorBuy />组件,它是组件的一部分<Main />。我试图导入异步函数,calculatorbuy.js但我得到了未定义的对象。如何从index.jsmain.js和传递道具calculatorbuy.js。在 index.js 中,一切都像魅力一样工作,但我想直接在组件中使用 props 值。

\n
index.js\n\nexport default function Home(props) {\n\n  const {data} = props.result;\n  console.log(data);\n\n  return (\n    <div className="container">\n      <Head>\n        <title>Buy BTC</title>\n        <link rel="icon" href="/favicon.ico" />\n        <meta name="viewport" content="width=device-width, initial-scale=1.0"></meta>\n      </Head>\n      <Header />\n\n      <Main />\n\n      <Footer />\n      <style jsx> {`\n        .container {\n          min-height: 100vh;\n          display: flex;\n          flex-direction: column;\n          justify-content: center;\n          align-items: center;\n        }\n      `} </style>\n    </div>\n  )\n}\n\nexport async function getServerSideProps(context) {\n …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs next.js cryptocurrency coingecko

4
推荐指数
1
解决办法
2万
查看次数

Binance API:APIError(代码=-1111):精度超过了该资产定义的最大值。|| Python

我有一个交易机器人,它在“ADAUSDT”中运行,具有动态的买卖数量,作为我的整个 USDT 余额的初始数量,并以相同的余额 + 利润或损失进行交易(它基本上以整个 USDT 余额进行交易并保持交易)一遍又一遍地)。这是一些代码:

from binance.client import Client
import Keys #personal api keys

client = Client(Keys.b_keys, Keys.b_secret)

infoa = client.get_account()
bal= infoa['balances']
i_o = float(bal[11]["free"])
v_min = v_min #some value of ADA, for example: 1.2 

order = client.create_order(
        symbol = "ADAUSDT" , 
        side=SIDE_BUY ,
        type=ORDER_TYPE_LIMIT ,
        timeInForce = TIME_IN_FORCE_GTC ,
        quantity = float(round((i_o) , 8)) , 
        price = v_min ,
        )               
Run Code Online (Sandbox Code Playgroud)

我知道 quoteAsset 和 baseAsset 所需的精度都是 8,因此round()在订单本身的数量值中使用该函数,但即使在那之后,API 仍然会向我抛出错误“精度超过了最大值”为该资产定义”。请帮助我:c

编辑:i_o 是我的“USDT”余额,理论上应该随每次交易而变化,因此使用此变量而不是每个订单数量的普通数字。

注意:我对 Python 很菜鸟,哈哈,我一周前才学了一些基础知识,所以如果你能详细说明一下那就太好了:D

python trading cryptocurrency binance binance-api-client

4
推荐指数
1
解决办法
3万
查看次数

来自同一来源的多个 NFT

一般性的 NFT 问题,但不要攻击我,我真的试图找到答案。

NFT 可以从同一张图像或该图像的副本创建吗?

例如,以我创建的这个 NFT Lion Cat 为例: https://rarible.com/token/0x60f80121c31a0d46b5279700f9df786054aa5ee5 :1200950 ?

有人可以下载该图像并从中创建 NFT 吗?

我的意思是,这不是我的原创内容并且我拥有它的版权吗?

在图像区域中,您获得了证明这张照片是您拍摄的RAW图像,除了摄影师之外没有人拥有这张RAW图像。但要创建此图像 NFT,我不必提供它。

cryptocurrency nft

4
推荐指数
1
解决办法
3379
查看次数

为什么我无法导入@rainbow-me/rainbowkit/styles.css?

我正在尝试将rainbowkit和集成wagmi到当前使用的现有网站中web3。当我注释掉样式导入时它可以工作,但它看起来真的很难看。我已确保 npm 是最新版本,rainbowkit 和 wagmi 也是最新版本。

我的进口声明:

import '@rainbow-me/rainbowkit/styles.css'

结果:

编译失败。

./src/App.tsx
Module not found: Can't resolve '@rainbow-me/rainbowkit/styles.css' in '/home/apollo/manifest-github/physical-claim-frontend/src'
Run Code Online (Sandbox Code Playgroud)

css typescript reactjs web3js cryptocurrency

4
推荐指数
1
解决办法
2345
查看次数

如何在Golang中导出到CSV?

我有以下开源代码来生成波纹地址和密钥,但我想将输出导出到 .csv 或 .xlsx 文件。我尝试通过导入“encoding/csv”包来编写一个函数,但我不太擅长 golang,并且无法让它工作。有什么建议么?

我还希望它迭代 n 次以生成所需数量的密钥。

这是来自 bitbucket.org/dchapes/ripple/cmd/ 的开源代码:

  package main

import (
    "flag"
    "fmt"
    "log"

    "bitbucket.org/dchapes/ripple/crypto/rkey"
)

func main() {
    secret := flag.String("secret", "",
        "Ripple secret, if empty gernate a random one")
    flag.Parse()

    var s *rkey.FamilySeed
    var err error
    if *secret != "" {
        s, err = rkey.NewFamilySeed(*secret)
    } else {
        s, err = rkey.GenerateSeed()
    }
    if err != nil {
        log.Fatal(err)
    }

    pubkey := s.PrivateGenerator.PublicGenerator.Generate(0)
    addr := pubkey.Address()

    if *secret == "" {
        if b, …
Run Code Online (Sandbox Code Playgroud)

export-to-excel go export-to-csv ripple cryptocurrency

3
推荐指数
1
解决办法
2万
查看次数

如何将 Metamask 连接到 Web3J (java)

我正在尝试将我的 Metamask 钱包连接到我的 Java Spring-Boot 后端。我试图遵循这里的例子。我能够自动生成随机数并毫无问题地接收钱包 ID。我正在尝试验证服务器上钱包中的签名随机数,以确保发件人确实是他们所说的人。但是,我无法在 Web3J 上找到任何文档来执行此操作。

web3j 不适合用于此目的吗?该示例展示了如何基于 javascript 在 NodeJS 上进行验证,但我没有找到任何关于如何在 Java 上执行此操作的示例。

我的理解是,公钥是钱包 ID 本身,而消息是由钱包私钥签名的随机数,由于明显的原因,该私钥不被共享。据此,我需要使用公钥“解密”消息,并查看解密的消息是否与后端发送到 Metamask 进行签名的随机数相同。它是否正确?

这是我创建随机数并将其发送到 UI 的代码:

public User findUserByPublicAddress(String publicWalletId) {
    User u = userRepository.findByPublicWalletId(publicWalletId);
    if(u == null) {
        u = new User("", "", "", null, publicWalletId, "");
        String nonce = StringUtil.generateRandomAlphaNumericString();
        u.setNonce(nonce);
        userRepository.saveAndFlush(u);
    }
    return u;
}
Run Code Online (Sandbox Code Playgroud)

在这里,我查看用户是否已经在我的系统中,如果不是,那么我只需创建一个临时用户,并生成一个随机数并将其保存在数据库中。该随机数被发送到 UI 以供 Metamask 进行签名。但是,我不确定如何进行验证部分。

java authentication metamask cryptocurrency web3-java

3
推荐指数
1
解决办法
3349
查看次数

kucoin websocket API,如何“订阅”他们的公共频道,他们说不需要授权,但他们要求令牌:(

问题是关于 kucoin websocket 公共通道(不是交易)的最后交易。

我只想要像其他加密货币交易所一样实时交易,但当我想连接时,"wss://ws-api-futures.kucoin.com/endpoint" 我得到:

WebSocketError:收到意外状态代码(401 未经授权)

文档https://docs.kucoin.com/futures/#create-connection缺乏解释:(

通常,对于其他交易所,我可以在 JavaScript 中执行此操作:

bybit_market_ws = new WebSocket("wss://stream.bybit.com/spot/quote/ws/v2");
bybit_market_ws.onmessage = event => bybit_trades(event.data);
bybit_market_ws.onopen = event => bybit_market_ws.send(JSON.stringify({"topic":"trade","params":{"symbol":"BTCUSDT","binary":false},"event":"sub"}));
function bybit_trades (jsonx) { console.log(JSON.parse(jsonx)); }
Run Code Online (Sandbox Code Playgroud)

那么我该如何使用 kucoin websocket 来做到这一点呢?

根据文档,我需要一个“公共令牌”,但没有解释如何获取该令牌:(

有人知道我如何通过 websocket(公共)通道检索最后的交易吗?

wss websocket cryptocurrency kucoin

3
推荐指数
1
解决办法
3735
查看次数