Price of bitcoin 21
By the end of July 2020, bitcoin is now 98 yuan
the bitcoin address and private key appear in pairs, and their relationship is just like the bank card number and password. A bitcoin address is like a bank card number, which records how much bitcoin you have on it. You can generate bitcoin address at will to store bitcoin. When each bitcoin address is generated, a corresponding private key of the address will be generated
extended materials:
whenever bitcoin comes into the view of mainstream media, mainstream media always ask some mainstream economists to analyze bitcoin. Earlier, these analyses always focused on whether bitcoin was a scam. Now the analysis is always focused on whether bitcoin can become the mainstream currency in the future. The focus of the debate is often on the deflationary nature of bitcoin
many bitcoin players are attracted by the fact that bitcoin can not be issued at will. The attitude of bitcoin players is quite the opposite, and the attitude of economists is polarized compared with the fixed amount of 21 million bitcoin
the price of bitcoin is always floating, so the price of bitcoin for RMB is always changing. From the beginning, a few years ago, when bitcoin was converted into RMB, it was only one to several, and finally it graally developed to one to more than ten, and then to one to dozens. At this time, it has been very shocking, and many people think it is a very strange phenomenon, As a virtual currency, although many people don't know what its main function is, most people think it's a bit similar to stocks, so they made a series of investments in bitcoin. Until January 2020, the value of bitcoin has grown crazily, rising to nearly 1:47000 this growth rate has exceeded most excellent stocks. Many people are shocked and often want to understand why this phenomenon occurs. In fact, my analysis is mainly caused by the following reasons:
3 Of course, one of the main reasons why the price of bitcoin has risen so fast is also related to the psychology of chasing up and killing down. For example, when many stocks have been rising, more people will buy them, but when they are falling, many people withdraw because of fear. So far, bitcoin's rise is still very large, Therefore, some people think it has investment value, so they have been buying it
bitcoin's fluctuation space is narrowing, which indicates that bitcoin's performance is not strong when facing pressure breakthrough. Recently, the closing price of bitcoin rose slightly, indicating that the inertial rebound ring the sharp rise in price on October 21 still exists 8203;
at the same time, considering the lack of willingness of bull pull, the number of active addresses has been significantly withdrawn in the short term. At present, bitcoin may need to adjust the trading day before it will continue to expand its rise 8203;
recently, bitcoin is strong, while Ethereum is weak. I plan to buy bitcoin for many times and Ethereum for short selling.
Strictly speaking, there is no issue price for bitcoin. In 2010, a programmer bought a pizza with 10000 bitcoins, the first bitcoin deal
bitcoin does not rely on a specific monetary institution. It is generated by a large number of calculations based on a specific algorithm. Bitcoin economy uses a distributed database composed of many nodes in the whole P2P network to confirm and record all transactions, and uses cryptography design to ensure the security of all aspects of money circulation
the decentralized feature and algorithm of P2P can ensure that it is impossible to artificially control the value of bitcoin by mass manufacturing. The design based on cryptography can make bitcoin only be transferred or paid by the real owner. This also ensures the anonymity of money ownership and circulation transactions. The biggest difference between bitcoin and other virtual currencies is that the total amount of bitcoin is very limited and it has a strong scarcity
{rrrrrrr}
extended data
principle
starting from the essence of bitcoin, the essence of bitcoin is actually the special solution generated by a bunch of complex algorithms. A special solution is one of the finite solutions of a system of equations. Every particular solution can solve the equation and is unique. In the metaphor of banknotes, bitcoin is the number of the top word of a banknote. If you know the number of the top word on a banknote, you have the banknote
and the process of mining is to constantly seek the special solutions of the equations through huge amount of calculation. The equations are designed to have only 21 million special solutions, so the upper limit of bitcoin is 21 million
to mine bitcoin, you can download the special bitcoin computing tools, register various cooperation websites, fill the registered user name and password into the computing program, and then click the operation to officially start. After completing the installation of bitcoin client, you can directly obtain a bitcoin address. When others pay, you only need to paste the address to others, and you can pay through the same client
after installing the bitcoin client, it will assign a private key and a public key. You need to back up the wallet data containing your private key to ensure that your property is not lost. Unfortunately, if the hard disk is completely formatted, personal bitcoin will be completely lost
network bitcoin
The price of bitcoin changes
the figure below shows all the price changes of bitcoin. It can be seen from the figure that bitcoin can only be traded in 2013, and the price is about 700 yuan. Up to now, the price of bitcoin is about 44800 yuan, an increase of n times
both sides of virtual currency transaction need bitcoin wallet and bitcoin address. Just like sending and receiving e-mail, the remitter pays bitcoin directly to the other party through a computer or smart phone according to the recipient's address
at present, bitcoin can be traded in the market by legal currency or virtual currency
warm tips: the above explanations are for reference only, without any suggestions. There are risks in entering the market, so investment should be cautious. Before making any investment, you should make sure that you fully understand the nature of the investment and the risks involved in the proct. After a detailed understanding and careful evaluation of the proct, you can judge whether to participate in the transaction
response time: March 11, 2021. Please refer to the official website of Ping An Bank for the latest business changes
[Ping An Bank I know] want to know more? Come and see "Ping An Bank I know" ~
https://b.pingan.com.cn/paim/iknow/index.html
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <netdb.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/ip.h>
#include <netinet/in.h>
#include <netinet/if_ether.h>
#include <netpacket/packet.h>
#include <net/ethernet.h>
#include <net/if.h>
#include <arpa/inet.h>
#include <errno.h>
/* 接收缓冲区大小 */
#define RCV_BUF_SIZE 1024 * 5
/* 接收缓冲区 */
static int g_iRecvBufSize = RCV_BUF_SIZE;
static char g_acRecvBuf[RCV_BUF_SIZE] = {0};
/* 物理网卡接口,需要根据具体情况修改 */
static const char *g_szIfName = "eth1";
/* 以太网帧封装的协议类型 */
static const int g_iEthProId[] = { ETHERTYPE_PUP,
ETHERTYPE_SPRITE,
ETHERTYPE_IP,
ETHERTYPE_ARP,
ETHERTYPE_REVARP,
ETHERTYPE_AT,
ETHERTYPE_AARP,
ETHERTYPE_VLAN,
ETHERTYPE_IPX,
ETHERTYPE_IPV6,
ETHERTYPE_LOOPBACK
};
static const char g_szProName[][24] = {
"none", "xerox pup", "sprite", "ip", "arp",
"rarp", "apple-protocol", "apple-arp",
"802.1q", "ipx", "ipv6", "loopback"
};
/* 输出MAC地址 */
static void ethmp_showMac(const int iType, const char acHWAddr[])
{ int i = 0;
if (0 == iType)
{
printf("SMAC=[");
}
else
{
printf("DMAC=[");
}
for(i = 0; i < ETHER_ADDR_LEN - 1; i++)
{
printf("%02x:", *((unsigned char *)&(acHWAddr[i])));
}
printf("%02x] ", *((unsigned char *)&(acHWAddr[i])));
}
/* 物理网卡混杂模式属性操作 */
static int ethmp_setPromisc(const char *pcIfName, int fd, int iFlags)
{ int iRet = -1;
struct ifreq stIfr;
/* 获取接口属性标志位 */
strcpy(stIfr.ifr_name, pcIfName);
iRet = ioctl(fd, SIOCGIFFLAGS, &stIfr);
if (0 > iRet)
{ perror("[Error]Get Interface Flags");
return -1;
}
if (0 == iFlags)
{ /* 取消混杂模式 */
stIfr.ifr_flags &= ~IFF_PROMISC;
}
else
{ /* 设置为混杂模式 */
stIfr.ifr_flags |= IFF_PROMISC;
}
iRet = ioctl(fd, SIOCSIFFLAGS, &stIfr);
if (0 > iRet)
{ perror("[Error]Set Interface Flags");
return -1;
}
return 0;
}
/* 获取L2帧封装的协议类型 */
static char *ethmp_getProName(const int iProNum)
{ int iIndex = 0;
for(iIndex = 0; iIndex < sizeof(g_iEthProId) / sizeof(g_iEthProId[0]); iIndex++)
{ if (iProNum == g_iEthProId[iIndex])
{
break;
}
}
return (char *)(g_szProName[iIndex + 1]);
}
/* Init L2 Socket */
static int ethmp_initSocket()
{ int iRet = -1;
int fd = -1;
struct ifreq stIf;
struct sockaddr_ll stLocal = {0};
/* 创建SOCKET */
fd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
if (0 > fd)
{ perror("[Error]Initinate L2 raw socket");
return -1;
}
/* 网卡混杂模式设置 */
ethmp_setPromisc(g_szIfName, fd, 1);
/* 设置SOCKET选项 */
iRet = setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &g_iRecvBufSize,sizeof(int));
if (0 > iRet)
{ perror("[Error]Set socket option");
close(fd);
return -1;
}
/* 获取物理网卡接口索引 */
strcpy(stIf.ifr_name, g_szIfName);
iRet = ioctl(fd, SIOCGIFINDEX, &stIf);
if (0 > iRet)
{ perror("[Error]Ioctl operation");
close(fd);
return -1;
}
/* 绑定物理网卡 */
stLocal.sll_family = PF_PACKET;
stLocal.sll_ifindex = stIf.ifr_ifindex;
stLocal.sll_protocol = htons(ETH_P_ALL);
iRet = bind(fd, (struct sockaddr *)&stLocal, sizeof(stLocal));
if (0 > iRet)
{ perror("[Error]Bind the interface");
close(fd);
return -1;
}
return fd;
}
/* 解析Ethernet帧首部 */
static int ethmp_parseEthHead(const struct ether_header *pstEthHead)
{ unsigned short usEthPktType;
if (NULL == pstEthHead)
{ return -1;}
/* 协议类型、源MAC、目的MAC */
usEthPktType = ntohs(pstEthHead->ether_type);
printf(">>>\nEth-Pkt-Type:0x%04x(%s) ", usEthPktType, ethmp_getProName(usEthPktType));
ethmp_showMac(0, pstEthHead->ether_shost);
ethmp_showMac(1, pstEthHead->ether_dhost);
return 0;
}
/* 解析IP数据包头 */
static int ethmp_parseIpHead(const struct ip *pstIpHead)
{ struct protoent *pstIpProto = NULL;
if (NULL == pstIpHead)
{ return -1;}
/* 协议类型、源IP地址、目的IP地址 */
pstIpProto = getprotobynumber(pstIpHead->ip_p);
if(NULL != pstIpProto)
{ printf("\nIP-Pkt-Type:%d(%s) ", pstIpHead->ip_p, pstIpProto->p_name); }
else
{ printf("\nIP-Pkt-Type:%d(%s) ", pstIpHead->ip_p, "None");}
printf("SAddr=[%s] ", inet_ntoa(pstIpHead->ip_src));
printf("DAddr=[%s]\n", inet_ntoa(pstIpHead->ip_dst));
return 0;
}
/* 数据帧解析函数 */
static int ethmp_parseFrame(const char *pcFrameData)
{ int iRet = -1;
struct ether_header *pstEthHead = NULL;
struct ip *pstIpHead = NULL;
/* Ethnet帧头解析 */
pstEthHead = (struct ether_header*)g_acRecvBuf;
iRet = ethmp_parseEthHead(pstEthHead);
if (0 > iRet)
{ return iRet;}
/* IP数据包类型 */
pstIpHead = (struct ip *)(pstEthHead + 1);
iRet = ethmp_parseIpHead(pstIpHead);
return iRet;
}
/* 捕获网卡数据帧 */
static void ethmp_startCapture(const int fd)
{ int iRet = -1;
socklen_t stFromLen = 0;
/* 循环监听 */
while(1)
{ /* 清空接收缓冲区 */
memset(g_acRecvBuf, 0, RCV_BUF_SIZE);
/* 接收数据帧 */
iRet = recvfrom(fd, g_acRecvBuf, g_iRecvBufSize, 0, NULL, &stFromLen);
if (0 > iRet)
{ continue;}
/* 解析数据帧 */
ethmp_parseFrame(g_acRecvBuf);
}
}
/* Main */
int main(int argc, char *argv[])
{ int iRet = -1;
int fd = -1;
/* 初始化SOCKET */
fd = ethmp_initSocket();
if(0 > fd) {
return -1;
}
/* 捕获数据包 */
ethmp_startCapture(fd);
/* 关闭SOCKET */
close(fd);
return 0;
}
编译命令
gcc -o a a.c
./a
实现效果图
...
>>>Eth-Pkt-Type:0x0800(ip) SMAC=[00:1a:92:ef:b6:dd] DMAC=[00:24:7e:dc:99:18] IP-Pkt-Type:6(tcp) SAddr=[192.168.0.111] DAddr=[192.168.0.100]
>>> Eth-Pkt-Type:0x0800(ip) SMAC=[00:24:7e:dc:99:18] DMAC=[00:1a:92:ef:b6:dd] IP-Pkt-Type:6(tcp) SAddr=[192.168.0.100] DAddr=[192.168.0.111]
>>> Eth-Pkt-Type:0x0800(ip) SMAC=[00:24:7e:dc:99:18] DMAC=[00:1a:92:ef:b6:dd] IP-Pkt-Type:1(icmp) SAddr=[192.168.0.100] DAddr=[192.168.0.111]
>>> Eth-Pkt-Type:0x0800(ip) SMAC=[00:1a:92:ef:b6:dd] DMAC=[00:24:7e:dc:99:18] IP-Pkt-Type:1(icmp) SAddr=[192.168.0.111] DAddr=[192.168.0.100]
>>> Eth-Pkt-Type:0x0800(ip) SMAC=[00:1a:92:ef:b6:dd] DMAC=[00:24:7e:dc:99:18] IP-Pkt-Type:6(tcp) SAddr=[192.168.0.111] DAddr=[192.168.0.100]
...