btcrpc接口文档
转自: https://zhuanlan.hu.com/p/23558268
getblocktemplate协议诞生于2012年中叶,此时矿池已经出现。矿池采用getblocktemplate协议与节点客户端交互,采用stratum协议与矿工交互,这是最典型的矿池搭建模式。
与getwork相比,getblocktemplate协议最大的不同点是:getblocktemplate协议让矿工自行构造区块。如此一来,节点和挖矿完全分离。对于getwork来说,区块链是黑暗的,getwork对区块链一无所知,他只知道修改data字段的4个字节。对于getblocktemplate来说,整个区块链是透明的,getblocktemplate掌握区块链上与挖矿有关的所有信息,包括待确认交易池,getblocktemplate可以自己选择包含进区块的交易。
挖矿有两种方式,一种叫SOLO挖矿,另一种是去矿池挖矿。前文所述的在节点客户端直接启动CPU挖矿,以及依靠getwork+cgminer驱动显卡直接连接节点客户端挖矿,都是SOLO挖矿,SOLO好比自己独资买彩票,不轻易中奖,中奖则收益全部归自己所有。去矿池挖矿好比合买彩票,大家一起出钱,能买一堆彩票,中奖后按出资比率分配收益。理论上,矿机可以借助getblocktemplate协议链接节点客户端SOLO挖矿,但其实早已没有矿工会那么做,在写这篇文章时,比特币全网算力1600P+,而当前最先进的矿机算力10T左右,如此算来,单台矿机SOLO挖到一个块的概率不到16万分之一,矿工(人)投入真金白银购买矿机、交付电费,不会做风险那么高的投资,显然投入矿池抱团挖矿以降低风险,获得稳定收益更加适合。因此矿池的出现是必然,也不可消除,无论是否破坏系统的去中心化原则。
矿池的核心工作是给矿工分配任务,统计工作量并分发收益。矿池将区块难度分成很多难度更小的任务下发给矿工计算,矿工完成一个任务后将工作量提交给矿池,叫提交一个share。假如全网区块难度要求Hash运算结果的前70个比特位都是0,那么矿池给矿工分配的任务可能只要求前30位是0(根据矿工算力调节),矿工完成指定难度任务后上交share,矿池再检测在满足前30位为0的基础上,看看是否碰巧前70位都是0。
矿池会根据每个矿工的算力情况分配不同难度的任务,矿池是如何判断矿工算力大小以分配合适的任务难度呢?调节思路和比特币区块难度一样,矿池需要借助矿工的share率,矿池希望给每个矿工分配的任务都足够让矿工运算一定时间,比如说1秒,如果矿工在一秒之内完成了几次任务,说明矿池当前给到的难度低了,需要调高,反之。如此下来,经过一段时间调节,矿池能给矿工分配合理难度,并计算出矿工的算力。
矿池通过getblocktemplate协议与网络节点交互,以获得区块链的最新信息,通过stratum协议与矿工交互。此外,为了让之前用getwork协议挖矿的软件也可以连接到矿池挖矿,矿池一般也支持getwork协议,通过阶层挖矿代理机制实现(Stratum mining proxy)。须知在矿池刚出现时,显卡挖矿还是主力,getwork用起来非常方便,另外早期的FPGA矿机有些是用getwork实现的,stratum与矿池采用TCP方式通信,数据使用JSON封装格式。
先来说一下getblocktemplate遗留下来的几个问题:
矿工驱动:在getblocktemplate协议里,依然是由矿工主动通过HTTP方式调用RPC接口向节点申请挖矿数据,这就意味着,网络最新区块的变动无法及时告知矿工,造成算力损失。
数据负载:如上所述,如今正常的一次getblocktemplate调用节点都会反馈回1.5M左右的数据,其中主要数据是交易列表,矿工与矿池需频繁交互数据,显然不能每次分配工作都要给矿工附带那么多信息。再者巨大的内存需求将大大影响矿机性能,增加成本。
Stratum协议彻底解决了以上问题。
Stratum协议采用主动分配任务的方式,也就是说,矿池任何时候都可以给矿工指派新任务,对于矿工来说,如果收到矿池指派的新任务,应立即无条件转向新任务;矿工也可以主动跟矿池申请新任务。
现在最核心的问题是如何让矿工获得更大的搜索空间,如果参照getwork协议,仅仅给矿工可以改变nNonce和nTime字段,则交互的数据量很少,但这点搜索空间肯定是不够的。想增加搜索空间,只能在hashMerkleroot下功夫,如果让矿工自己构造coinbase,那么搜索空间的问题将迎刃而解,但代价是必要要把区块包含的所有交易都交给矿工,矿工才能构造交易列表的Merkleroot,这对于矿工来说压力更大,对于矿池带宽要求也更高。
Stratum协议巧妙解决了这个问题,成功实现既可以给矿工增加足够的搜索空间,又只需要交互很少的数据量,这也是Stratum协议最具创新的地方。
再来回顾一下区块头的6个字段80字节,这个很关键,nVersion,nBits,hashPrevBlock这3个字段是固定的,nNonce,nTime这两个字段是矿工现在就可以改变的。增加搜索空间只能从hashMerkleroot下手,这个绕不过去。Stratum协议让矿工自己构造coinbase交易,coinbase的scriptSig字段有很多字节可以让矿工自由填充,而coinbase的改动意味着hashMerkleroot的改变。从coinbase构造hashMerkleroot无需全部交易,
如上图所示,假如区块将包含13笔交易,矿池先对这13笔交易进行处理,最后只要把图中的4个黑点(Hash值)交付给矿工,同时将构造coinbase需要的信息交付给矿工,矿工就可以自己构造hashMerkleroot(图中的绿点都是矿工自行计算获得,两两合并Hash时,规定下一个黑点代表的hash值总是放在右边)
。按照这种方式,假如区块包含N笔交易,矿池可以浓缩成log2(N)个hash值交付给矿工,这大大降低了矿池和矿工交互的数据量。
Stratum协议严格规定了矿工和矿池交互的接口数据结构和交互逻辑,具体如下:
1. 矿工订阅任务
启动挖矿机器,使用mining.subscribe方法链接矿池
返回数据很重要,矿工需本地记录,在整个挖矿过程中都用到,其中:
Extranonce1,和 Extranonce2对于挖矿很重要,增加的搜索空间就在这里,现在,我们至少有了8个字节的搜索空间,即nNonce的4个字节,以及 Extranonce2的4个字节。
2. 矿池授权
在矿池注册一个账号 ,添加矿工,矿池允许每个账号任意添加矿工数,并取不同名字以区分。矿工使用mining.authorize方法申请授权,只有被矿池授权的矿工才能收到矿池指派任务。
3. 矿池分配任务
以上每个字段信息都是必不可少,其中:
有了以上信息,再加上之前拿到的Extranonce1 和Extranonce2_size,就可以挖矿了。
4. 挖矿
1) 构造coinbase交易
用到的信息包括Coinb1, Extranonce1, Extranonce2_size 以及Coinb2,构造很简单:
为啥可以这样,因为矿池帮矿工做了很多工作,矿池已经构建了coinbase交易,系列化后在指定位置分割成coinb1和coinb2,coinb1和coinb2包含指定信息,比如coinb1包含区块高度,coinb2包含了矿工的收益地址和收益额等信息,但是这些信息对于矿工来说无关紧要,矿工挖矿的地方只是Extranonce2 的4个字节。另外Extranonce1是矿池写入区块的指定信息,一般来说,每个矿池会写入自己矿池的信息,比如矿池名字或者域名,我们就是根据这个信息统计每个矿池在全网的算力比重。
2) 构建Merkleroot
利用coinbase和merkle_branch,按照上图方式构造hashMerkleroot字段。
3) 构建区块头
填充余下的5个字段,现在,矿池可以在nNonce和Extranonce2 里搜索进行挖矿,如果嫌搜索空间还不够,只要增加Extranonce2_size为多几个字节就可轻而易举解决。
5. 矿工提交工作量
当矿工找到一个符合难度的shares时,提交给矿池,提交的信息量很少,都是必不可少的字段:
矿池拿到以上5个字段后,首先根据任务号ID找出之前分配任务前存储的信息(主要是构建的coinbase交易以及包含的交易列表等),然后重构区块,再验证shares难度,对于符合难度要求的shares,再检测是否符合全网难度。
6. 矿池给矿工调节难度
矿池记录每个矿工的难度,并根据shares率不断调节以指定合适难度。矿池可以随时通过mining.set_difficulty方法给矿工发消息另其改变难度。
如上,Stratum协议核心理念基本解析清楚,在getblocktemplate协议和Stratum协议的配合下,矿池终于可以大声的对矿工说,让算力来的更猛烈些吧。
② Chainge技术沙龙(0414)-区块链技术的安全隐患
虚拟机设计
零钱整理
慢雾科技介绍
01| The Dao事件
以太坊第一个安全大事件
智能合约的取款
新建一个Bank,存入一部分钱,用Dao框架不停取钱。
取款-判断余额-取款操作框架-转空该账户下的所有钱。
简单的例子就是,你的银行卡有余额100万,你需要买一个10块钱的饮料,但是支付的过程有漏洞,所以你银行卡的所有钱都被转走。
一、外部调用
02| 以太坊黑色情人节
起源:第一转账时间是2.14
ETH节点统计
客户端、客户端版本、OS系统。整个系统的庞杂
蜜罐检测 (部署陷阱能检测出黑客的点来)
net_version
判断是主网还是测试网,只攻击主网
3000+主网节点完全暴露
eth_accounts
获取钱包账号,涉及钱包账号
eth_getBanlance
获取有多少钱,被盗46000+ETH
why?
unlockAccount 函数介绍
该函数将使用密码从本地的keystore 里提取private key 并存储在内存中,函数第三个参数ration 表示解密后private key 在内存中保存默认是300 秒; 如果设置为0,则表的时间,示永久存留在内存,直至Geth/Parity 退出。
详见:
https://github.com/ethereumgethereum/wiki/Management-APIs#personal_unlockaccount
节点存用户的keystore信息(严重危险)
eth_getBlockByNumber
墨子扫描引擎,扫描有问题的节点,慢雾的以太坊安全事件的披露
被盗ETH,市值,被盗钱包数
具体内容可以查看慢雾发布的 以太坊黑色情人节专题
生态相关
ETH:矿池、钱包、web3、smart contract、dapp
BTC:矿池、钱包、Lightning Network
BTC RPC
防御建议
管理数十万用户安全的接近百万的比特币
华人世界唯一被bitcoin.org网站展示的钱包
比特派多种区块链资产(BTC、ETH、Token、分叉)
冷热结合,确保安全
比特派-热钱包
比特护盾-冷钱包/硬件钱包
区块链安全事件
私钥决定了区块链资产的所有权,丢了私钥也就相当于丢了一切。私钥就是一个随机数,这个随机数的概率空间很大(256 位,即2^256)
钱包=生态入口
需要在安全的同时做到尽可能的开放
玩法的开放,技术的开放,通用的技术接口,生态的开放,把自己的资源进行导入。合作伙伴计划:技术咨询、区块链技术支持、开放平台、入口支持、生态支持、海外市场合作。帮助伙伴实现区块链转型或区块链项目孵化,安全、便捷实现真正落地的区块链应用场景。
联系方式 [email protected]
用户风控系统,数百万的数字货币用户。
最大可能保持我们的数字资产
骗子故事:抢数字货币份额,钱没到账,冒充官方,交出助记词
恶意钱包地址库
诈骗钱包、黑客钱包、羊毛党钱包
恶意网站库
钓鱼网站、空投网站、交易所、众筹
风险合约库
重名币、空格币、风险合约
安全事件库
历史安全事件提醒
最新事件提醒
盗币风险监控
安全意识教育
可能出现被盗的情况
游戏即资产,稀缺资源,成为游戏运营者。最后大BOSS死于暴露了自己的密钥。
通过社工(社会工程学)【欺骗的艺术】黑客攻击手法,虚拟景象做出错误判断让自己陷入危机。
人始终是系统中最薄弱的环节,币安背锅的黑客事件。大客户泄露自己的账户,调用API接口,自动交易。虽然没丢币但是黑客在期货市场盈利。
关于安全钱包的帖子(来自小白愤怒控诉,实际没有理解整个机制):
1、我没私钥和交易密码,东西都在你们那我不知道安全在哪里
2、密语算个毛,你告诉我拿着你们的密语能做什么。
汽车和自行车事件,出了问题之后,弱势的一方被原谅。负责的是更大的一方。平台替没有安全意识的用户背锅。
对于大部分用户来说,交易所的安全性比普通用户自己管理的安全性要高,用户的安全意识没有提高,交给交易所帮助、协助你来管理你的钱包提示很多风险操作。
为什么要随机生成256位的密钥,为什么不能用户自己去设置,如果自己设置会处于一个集中的区域,随机值不够,私钥生成时就处于危险的状态。
自己的安全认识不够,所以自己造成的损失,先怼交易所先怼钱包。先想到得是你们的问题和漏洞造成的,不是我的操作失误和密钥泄露造成的。
币派做的是大神和小白的交流之间的翻译,做画漫画,写段子的逗比。
币小宝防骗指南漫画,贡献题材和内容。
③ XDAG(匕首币)——未来pow+dag货币之王
Dagger(代币简称XDAG)是一个全新的基于有向无环图(DAG)的加密货币,替代了区块链技术。没有预挖,也没有ICO计划,是一个真正由社区推动、公平开放的项目。而且不同于其它DAG方向的币,Dagger可以进行挖矿,目前CPU、GPU都可以进行挖矿。
Xdag总量为4, 294, 967, 296个(2的32次方),分 160 年挖完,明年预计大幅度减产,总量减少至8亿。一天产量为 138 万,每 64 秒产生一个块,一个块 1024 枚 Xdag。目前是 4 年递减,每隔 4 年挖出矿的数量减半。目前Xdag已经挖出近2亿枚,流通量约一亿八千枚。
Xdag于2017年11月被设计出来,内部测试两个月后,也就是2018年1月正式上线主网。它的作者是俄罗斯莫斯科国立大学的高级研究员,数学研究背景。Xdag的目标是创建一个能够允许每秒进行成千上万笔交易的去中心化的支付系统。
Dagger (XDAG)是全世界第一个实现pow+dag的加密货币,既拥有pow的去中心化和高安全性,又加入了dag的高并发,从bitcointalk.com 创世以来,就受到全世界的关注,被誉为dag中的比特币。每一个块包含一个交易,块同时也是一个地址。Xdag是仅可以通过挖矿获取,目标是成为全球性的超主权支付货币。完全没有预挖也没有ICO,主网络已经稳定运行五个月,算力上涨异常迅速。
DAG或直接非循环是在分布式、分散式环境中的人之间发送数据的另一种方法。这是在没有区块链的情况下完成的,可以提供更高的可扩展性。目前来看,XDAG网络在POW这种目前最优的去中心化方案下,依然能够拥有1000~10000tps,且整个转账系统零手续费。
XDAG(匕首币)已经于2018年04月22日,晚上6点整(UTC+8),正式登陆Coinbat.com。此为国内交易量最大交易所。
区块=交易=钱包
Xdag中所有的钱包地址、交易记录均是块(Block)。因为这种特性,所有的钱包都需要在网络上有独一无二的block。换而言之,你不可以向不存在的wallet转账。这意味着,不用再担心像其他加密货币一样,打到黑洞地址的情况。之前加密货币最不人性的一点就是容易手误打到错误地址。这一切在xdag中,不会出现。因为只有已经存在的钱包,才在xdag网络上有独一无二的区块。同时Xdag转账是没有任何费用的。
第一个基于DAG技术可挖矿(PoW)的公链
Xdag 是采用PoW(工作量证明)的 DAG 技术,是目前业界唯一个可以进行挖矿的DAG网络。相较于区块链技术Xdag有更高的 TPS,同时相对于其他DAG技术,Xdag则采用已经广为认可的 PoW共识机制,确保去中心化和公平性。
解决了双花问题
在Xdag中,主块(Main Block)在每个帧间隔(Frame Time)中生成,Xdag中所有交易均是块(Block),当发生交易产生交易块(Transaction Block)发送到主网中,见证者会按照规则验证交易,并将交易块链接到主块上,一个交易块会有自己的链接关系,见证者会依据规则确保先到的交易块被链接到主块,后到的块将不会被链接到主块,只有被主块链接的块才是有效的。
高TPS,转账速度快
到目前为止,整个系统已经稳定运行接近5个月,转帐速度极快,基本都在几十秒即可到达,远远超过 ETH、BTC。之后可以缩短到十几秒。
目前最好的不可能三角解决方案
Xdag通过pow来保证去中心化和安全性,同时保留了dag的高并发。这是目前市场最完美的不可能三角(高并发、安全性、去中心化不可兼得),具备非常大的区块链三点零潜质。
目前xdag的开发由社区自治,目前开发进度正常,版本更新快。前阵子曾因为算力上涨导致主网出现过两次不同步的现象,经过社区开发人员的开发,目前项目已经很大提升了其稳定性。现在转移开发重点为RPC接口、移动钱包的开发。RPC接口开发完成后意味着能实现交易平台自动冲提功能,届时也会一些交易平台进行对接,如果能够顺利上线一些流通性更好的平台,对项目本身的意义也是非常正面的。也许在未来,会有更科学的技术能够实现点对点交易、安全、匿名、高效的完美整合。但至少在接下来的一段时间里,XDAG绝对会是发展潜力无穷的金子。
xdag打赏address:ZBJ9BLTG+knstcKzwSiNfof9hDoDtdko
④ api数据接口怎么调用
view plainprint?
<?php
/* 数据接口调用通用DEMO SDK
* DATE:2014-07-29
*/
#通过数据堂申请到dtkey
$apikey ='';
#api编号
$apicode='caipiao';
$rettype='xml'; #提供json和xml两种格式,使用时任选其一
$url ='http://192.168.1.15/data/getData.htm'; #请求的数据接口URL
$c='dlt';
$params ='&apikey='.$apikey.'&apicode='.$apicode.'&rettype='.$rettype.'&c='.$c;
$content = getData($url.'?'.$params);
if($content){
#根据所需读取相应数据
echo $content;
} else {
echo 'Error';
}
/* 请求接口,返回JSON数据
* @url:接口地址
*/
function getData($url) {
// 创建一个cURL资源
$ch = curl_init();
// 设置URL和相应的选项
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; // 获取数据返回
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true) ; // 在启用 CURLOPT_RETURNTRANSFER 时候将获取
// 抓取URL并把它传递给浏览器
$response = curl_exec($ch);
// 关闭cURL资源,并且释放系统资源
curl_close($ch);
return $response;
}
?>
以上代码是php的
view plainprint?
/**
* 通过java处理时调用API的方法(示例)<br>
*
* @author datatang
* @version 1.0
* @create date 2014/08
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import org.apache.log4j.Logger;
/**
* 使用java发送GET请求获取数据
* @author datatang
*
*/
public class SdkDemo {
static Logger log = Logger.getLogger(SdkDemo.class);
//测试主程序
public static void main(String[] args) {
//连接url地址
//http://api.datatang.com/data/getData.htm 固定地址 (必须项目)
String strUrl = "http://api.datatang.com/data/getData.htm";
//dtkey 通过页面申请的API KEY。(必须项目)
String strKey = "XXXXXXXXXXXXXXXXX";
//apicode 各API的代码 (必须项目)
String strApicode = "XXXX";
//rettype 需要返回的格式(支持XML及JSON)(必须项目)
String strRettype = "XML";
//各API需要参数(详细参考画面-各API参数不同)
String strparam = "";
//例如
strparam = "datatype=ore&startDate=2014-06-30&endDate=2014-06-30";
//访问URL地址
String url = strUrl + "?apikey=" + strKey + "&apicode=" + strApicode + "&rettype=" + strRettype
+ "&"+ strparam;
try {
String res = readByGet(url);
System.out.println(res);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 通过GET请求调用url获取结果
* @param inUrl 请求url
* @throws IOException
* @return String 获取的结果
*/
private static String readByGet(String inUrl) throws IOException {
StringBuffer sbf = new StringBuffer();
String strRead = null;
//模拟浏览器
String userAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 "
+ "(KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36";
//连接URL地址
URL url = new URL(inUrl);
//根据拼凑的URL,打开连接,URL.openConnection函数会根据URL的类型,
//返回不同的URLConnection子类的对象,这里URL是一个http,因此实际返回的是HttpURLConnection
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
//设置连接访问方法及超时参数
connection.setRequestMethod("GET");
connection.setReadTimeout(30000);
connection.setConnectTimeout(30000);
connection.setRequestProperty("User-agent",userAgent);
//进行连接,但是实际上get request要在下一句的connection.getInputStream()函数中才会真正发到 服务器
connection.connect();
//取得输入流,并使用Reader读取
InputStream is = connection.getInputStream();
//读取数据编码处理
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "UTF-8"));
while ((strRead = reader.readLine()) != null) {
sbf.append(strRead);
sbf.append("\r\n");
}
reader.close();
//断开连接
connection.disconnect();
return sbf.toString();
}
}
以上代码是java开发,只要更改链接为你想要的数据链接就ok了
⑤ Bitcoin Cash的新地址格式CashAddr
转自:https://zhuanlan.hu.com/p/34931303
Bitcoin Cash,老的比特币格式的地址被称为Legacy(遗产)地址,升级节点至0.16.2后,所有的RPC地址展示都用了CashAddr格式,包括listunspent,listtransactions,validateaddress等常用的RPC命令。
BCH新老地址的对比:
1. 新地址是和老地址一一对应的,它们对应了同一个私钥,只是换了种写法
2. 新地址可以发送余额给老地址,老地址可以发送余额到新地址
3. 新地址是大小写不敏感的,可以全部转成大写,也可以全部转成小写,优先小写格式,同一地址不能大小写混用
4. 新地址的前缀可写可不写,老地址没有前缀,通过首字符来标识类型
5. 新地址用base32编码,老地址用base58编码
6. 新地址格式不是一个软分叉,也不是一个硬分叉(这个有点争议,改了大家都依赖的节点程序其实算是一个软分叉)
自从比特币分叉出BCH以来,两个分叉币就逐渐地往不同的方向走了,软分叉的BTC支持了隔离见证,也增加了隔离见证地址等功能,默认生成新地址(getnewaddress)是p2sh-segwit隔离见证地址了,如果想要生成其它格式的地址,可以使用address_type来指定地址类型,例如要生成原始格式地址,address_type要填legacy。现在,Bitcoin Cash也有了自己的地址格式,而且推荐用户优先选用新的地址格式。
BCH的新地址格式类似这样:
bitcoincash:
bchtest:
开头是一个网络名,后面是一个q开头的base32编码的字符串,包含了版本号、公钥哈希值、校检码等信息,它们根据一些规则来拼接成这样一个地址,具体原理请参考 这里 。
新节点支持使调用接口数据时使用老地址:在节点配置usecashaddr=0
新弄一个地址格式的初衷,在于区别老地址和新地址,以免用户充错币。例如充错BTC到BCH地址,由于BCH已经做了防重放攻击,这样相当于将BTC打过去了与BCH地址相同的一个BTC地址上去了,要找回的话还挺麻烦,需要将BCH钱包的私钥,导入到BTC钱包上,才能将币打出,类似的将BCH充值到BTC地址也一样。如果私钥不由自己掌握,或者交易所、钱包等商家不提供找回服务,那么这个币就相当于丢了。有些服务商为了防止用户打错,干脆将BTC和BCH地址充值地址弄成一致的,这样用户就不会打错了,即使打错了,也是充值到自己的账号去,可以随时提走。
新格式解决了一些问题,新老地址混用,可能会造成阅读障碍。
除了新老地址混用的问题,老的比特币地址其实经过了精心的设计,通过base58编码,避免了一些容易看错的字母和数字;使用首字母来标识类型,能够让人一眼知道这是个啥地址,比如m或n开头的,是一个测试环境地址,而1开头是正式环境地址,如果是3开头的,那么它是一个P2SH地址。新地址格式,通过前面的版本号来看地址所属的网络,不能再轻松看出差别了,新地址格式的确没有老地址那么简洁易用。
BCH地址转换器
https://cashaddr.bitcoincash.org/
https://bch.btc.com/tools/address-converter
https://www.viabtc.com/
参考资料
https://zhuanlan.hu.com/p/34931303
https://github.com/bitcoincashorg/spec/blob/master/cashaddr.md
https://github.com/bitcoincashorg/bitcoincash.org/blob/master/spec/cashaddr.md
⑥ 求教,比特币钱包怎么与php建立连接
就目前来说如果有开发文档你需要根据开发文档来弄,如果不是那就没有办法了。
希望我的回答可以帮到你,如果有什么不懂可以追问。
⑦ Omni相关接口一览
Omni的资料相对比较少,把一些常用命令执行结果也列出来,便于快速的了解。
omni_getallbalancesforid
取指定omni代币
为什么是一堆地址?
It returns all balances for the entire state, not just for addresses in the wallet.
omni_getallbalancesforaddress
单独取某个地址的omni代币
omni_gettransaction
取交易数据
propertyid为31,在这就是USDT了。
再取下以前测试过的地址,为什么这个地址USDT这么多?
omni_listproperties
列出propertyid的代币,可以看到propertyid=31是啥了
详细查看propertyid=31的数据:
raw transaction
到这说下我研究USDT的目的,我需要进行USDT转帐交易,同时希望是在冷钱包中签名,所以需要使用原始交易数据,生成交易数据后再拿到冷钱包中进行签名,再把签名后数据拿到热钱包中发送。
这个命令是比特币的命令,可以 在这了解这些命令
基于比特币UTXO的方式,并不是能在一个节点上列出任意地址的余额,也无法列出任意地址的UTXO,得先把地址导入钱包。
指定omni代币和数量
指定从哪个源地址(UTXO中txid和vout)转移比特币
这一步把omni代币数据也组合到交易数据上
指定矿工费用和UTXO数据(txid、vout、scriptPubkey、value),也可以改变找零地址
这步是比特币的签名命令
在这发现一个问题,交易签名时对input进行了判断,而不是我以为的只是用对应的私钥进行签名而已。
重新走一遍这个生成原始交易的流程,保证input存在且unspent,但没有私钥进行签名看看是什么结果?
USDT钱包基本没有可用的,也就Omnicore这边可以用,要再搭私链又太麻烦费事,只能从交易所提点USDT出来测试了。
继续走一遍生成原始交易数据的流程:
这次执行到发送交易了,只是发送交易出错,据说是费用太低,其实我是特意做测试的,因为这个地址上除了转USDT带来的0.00000546BTC之外,根本就没有比特币,指定费用再大也没用!重新测试了一下指定更大的交易费错误也是一样,看来这个错误就是说BTC不够了!
还得转点BTC到这个地址,这样所有的流程又得重来,因为UTXO变了...
交易成功,等待确认!
在btc.com能查到这笔交易了,不过它上面有个交易加速,这个加速是怎么实现的呢?我给它钱,它怎么给矿工钱?
交易费设得太低了,不知道能不能成交了!
不过以上流程基本验证USDT转帐也可以使用热钱包建立原始交易,冷钱包签名的模式了!
原理上是和比特币是一样的,只是验证还是必需自己做一下!
https://github.com/OmniLayer/omnicore/issues/475
https://docs.google.com/document/d/1vhL4QQL5nNstFfnxDvA-sHB8u5b797FQn550hkURWLM/edit
https://github.com/OmniLayer/omnicore/blob/omnicore-0.0.10/src/omnicore/doc/rpc-api.md
https://bitcoin.stackexchange.com/questions/10090/how-to-get-an-addresss-balance-with-the-bitcoin-client?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
https://gist.github.com/dexX7/
⑧ 映泰TB250-BTC D+ 8卡上怎么没有24pin的主板供电接口啊,该如何接电源
用专用电源
比如全汉FSP1600W额定功率挖矿专用电源
矿机专用电源的输出端口全部采用6pin的接口,均为12V输出,取消了24pin中5V及3.3V的供电输入
⑨ 映泰tb350btc有m2接口吗
有。映泰tb350btc是有m2接口的,可以使主板工作更加稳定。映泰是中国台湾的世界级的主板大厂,与上游芯片厂商关系密切,是nVIDIA的AIC核心合作伙伴。
⑩ BTC是什么
企业与消费者之间的电子商务(Business to Customer,即B2C)。这是消费者利用因特网直接参与经济活动的形式,类同于商业电子化的零售商务。随着因特网的出现,网上销售迅速地发展起来。
B2C就是企业通过网络销售产品或服务给个人消费者。企业厂商直接将产品或服务推上网络,并提供充足资讯与便利的接口吸引消费者选购,这也是目前一般最常见的作业方式,例如网络购物、证券公司网络下单作业、一般网站的资料查询作业等等,都是属于企业直接接触顾客的作业方式。可成以下四种经营的模式:
