未分类

OBS直播画面模糊怎么回事

主播,你能问出这个问题,是好事,至少说明OBS直播,已经玩起来了。 那么一个小小的设置,就可以让你的画面清晰起来。就是视频比特率,以我的经验,把视频比特率设置到高于2100,以后,清晰度已经到达可以接受的程度。当然数字越大,视频清晰度越高,但是也要考虑到你的网络上行速度的感受。 OBS主播进阶教程 http://blog.csdn.net/cpuwolf/article/details/72392769

(二)暗网信息爬取(python)

首先要感谢舍友大佬提供的ShadowsocksR以及相应配置。感谢在本阶段帮助过我的学长学姐,谢谢。 暗网(深网,不可见网,隐藏网)是指那些储存在网络数据库里、不能通过超链接访问而需要通过动态网页技术访问的资源集合,不属于那些可以被标准搜索引擎索引的表面网络。 动态网页的url不固定,但可以被爬虫爬取,这是第一个点。 由于相关法律风险,本暗网爬虫代码不开源,但我会将我所理解的核心内容记录。 代码环境为ubuntu,使用语言python,使用库urllib2,socks, socket。 这里不用requests库,在参考许多教程如https://github.com/kennethreitz/requests/issues/3863/ 后发现,requests似乎无法使用socks5的代理端口,遂弃之 进入暗网的“门”为TorBrowser或者Tor 注意:torbrowser和tor并非一个东西,torbrowser是基于火狐浏览器的洋葱浏览器,通常用来做暗网入口,而且一般情况下已经足够了,但由于需要代码环境,我使用了纯Tor 以下是我的搭建步骤: 一,安装配置Tor 在ubuntu命令行输入 sudo apt-get install tor /etc/init.d/tor restart 启动后socks监听9050端口。 tor --hash-password mypassword 用来输入你的密码 编辑/etc/tor/torrc 在其中加上 ControlPort 9051 RunAsDaemon 1 Socks5Proxy 127.0.0.1:1080 HashedControlPassword 16:872860B76453A77D60CA2BB8C1A7042072093276A3D701AD684053EC4C 让ControlPort监听9051端口,后边那个16:开头的hash就是上一步得到的。Socks5Proxy是可以使shadowsocks为tor的前端代理(我使用的shadowsocks的端口为1080) 最后重启tor /etc/init.d/tor restart (经过曲折的一番探索,可以基本断定,python的stem库控制tor,并不是控制tor浏览器,而是可以利用tor作为自己的匿名代理,或者监视tor的流量走向。stem库目测不能为暗网爬虫做出什么贡献) 二,设置前端代理shadowsocks 这一段本应该放在最前面,但由于本人的shadowsocks完全依靠了舍友的鼎力帮助,这一段还需要往后自己探索。 就本人理解,shadowsocks作为前端代理最主要的功能就是翻墙。。。 对外提供端口为1080。 三,利用Tor的9050端口爬取暗网。 使用urllib2库,socks库作为socks5代理,示例代码如下: import socket import socks import urllib2 ipcheck_url = 'http://checkip.amazonaws.com/' # Actual IP. print(urllib2.urlopen(ipcheck_url).read()) # Tor IP. socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, '127.0.0.1', 9050) socket.socket = socks.socksocket print(urllib2.urlopen(ipcheck_url).read() 该代码引用自https://stackoverflow.com/questions/1096379/how-to-make-urllib2-requests-through-tor-in-python

(一)表层网络信息获取(Python引擎爬虫)

项目整体的流程在初步分为三步: 1,表层网络信息获取 2,暗网信息爬取(第一个难点,目前已经解决) 3,信息相似度匹配,机器学习分析。 表层网络信息获取原本打算使用百度、google、bing等搜索引擎。暗网大多数内容为英文,而英文搜索又是百度搜索的短板,遂放弃百度。 google需要翻墙,bing的搜索又不够简洁。 于是找到了了元搜索引擎。 “元搜索引擎又称多搜索引擎,通过一个统一的用户界面帮助用户在多个搜索引擎中选择和利用合适的(甚至是同时利用若干个)搜索引擎来实现检索操作,是对分布于网络的多种检索工具的全局控制机制”——百度百科 简而言之,元搜索引擎可以集百家之长,给用户更大的选择。我选择的元搜索引擎为searX,该搜索引擎已在github上开源,强烈推荐,甚至可以搭建自己的searX元搜索引擎。 使用Python requests和lxml下载了searX上的链接,存入本地。 核心代码如下: if not os.path.exists(word): os.mkdir(word) print '[+]searching '+word headers = { 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Encoding': 'gzip, deflate, compress', 'Accept-Language': 'en-us;q=0.5,en;q=0.3', 'Cache-Control': 'max-age=0', 'Connection': 'keep-alive', 'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko/20100101 Firefox/22.0' } for pagecount in range(1, 11): url = 'https://searx.me/?q='+word+'&categories=general&pageno=' + str(pagecount)+'&time_range=None' html = requests.get(url=url,headers=headers) print '[+]'+url path = etree.HTML(html.content) flag=11 if pagecount==1: flag=22 for i in range(1,flag): tempword = "

tensorflow实现图像色彩的调整

实现图像的调整包括以下几个方面: 调整图像的亮度:tf.image.adjust_brightness(img, p)。img是表示目标图像,p表示对比度,大于零变亮,反之变暗 调整图像的对比度。tf.image.adjust_contrast,用法同上 调整色相。tf.image.adjust_hue。用法同上 调整饱和度:tf.image.adjust_saturation。用法同上 例如: import matplotlib.pyplot as plt; import tensorflow as tf; image_raw_data_jpg = tf.gfile.FastGFile('11.jpg', 'r').read() with tf.Session() as sess: img_data_jpg = tf.image.decode_jpeg(image_raw_data_jpg) img_data_jpg = tf.image.convert_image_dtype(img_data_jpg, dtype=tf.float32) img_1 = tf.image.adjust_brightness(img_data_jpg, 0.5) img_2 = tf.image.adjust_contrast(img_data_jpg, 5) img_3 = tf.image.adjust_hue(img_data_jpg, 0.8) img_4 = tf.image.adjust_saturation(img_data_jpg, 5)

unity5.6.0新版本使用videoplayer发布后视频不能播放

关于unity新版本videoplayer的使用可以参照这篇文章http://blog.csdn.net/dark00800/article/details/70160463 最近由于项目需要,使用了unity新版本的videoplayer播放视频,播放的视频有MP4以及mov格式的视频文件,发现发布后视频不能正确播放。 后来发现原因有2个: 1.在unity编辑界面时,在代码中给videoplayer.url赋值时的路径可以是相对路径,此时运行程序可以正确播放,但是发布后不能。所以此时的路径必须为绝对路径; 2.发布后的程序videoplayer不支持mov格式的视频。(未发布时的程序是可以播放mov格式的视频的,发布后的mov视频都不能播放,MP4格式的没问题。)

VideoView在播放视频出现黑屏现象

今天做项目需要用到视频播放,就用VideoView来播放下载好的本地视频,但是播放的时候出现黑屏现象。查了下资料,说是需要在activity中onCreat里添加 getWindow().setFormat(PixelFormat.TRANSLUCENT); 这段代码的主要作用是给页面设置一个透明背景。这个虽然管用了,但是感觉并不是一个根本解决办法。 在http://blog.csdn.net/goodlixueyong/article/details/53590573这篇文章了做了更加详细的解决办法。 我用的这里面的方法四处理的。

Ubuntu14.04下安装AMD闭源显卡驱动fglrx(开发专用)

我的电脑是AMD的R9 200系列显卡。 安装完Ubuntu系统之后,进入system setting可以看到当前使用的是开源驱动。 接下来我把我整理出来的目前可行的安装方法分享给大家。 (额外补充一点,在你安装完Ubuntu系统之后,建议马上在设置中将镜像服务器,也就是源换成中国的源,我使用的是中科大的源,貌似是mirror.ustc.edu) 第一步:去AMD官网下载对应版本的驱动包。 去官网下载时发现,一共有4个包,前缀分别是fglrx-core 、fglrx_… 、fglrx-amdccc和fglrx-dev。先把这4个包都下载下来。 第二步:安装dependencies依赖项。 刚入门Ubuntu的人可能会被依赖项整懵逼,我也是被坑过很多次了……在terminal终端中输入以下命令: sudo apt-get install xserver-xorg-dev build-essential cdbs dh-make dkms execstack dh-modaliases libqtgui4 debhelper debconf libc++6 dkms libqtgui4 libelfg0 linux-headers-generic 点击回车之后开始安装,不过你很有可能会碰到一个提示说dependencies出问题,然后列出一些依赖包说不会安装(英文后缀是not to be installed)。这个时候你不要慌,此时遇到这个问题很有可能是你在装Ubuntu系统的时候就已经装了一些依赖包,导致你后面装额外包的时候会因为这些包已经装过了就出问题。一般来说可以忽略掉,但是如果你不放心的话,就sudo apt-get remove XXX,(其中XXX就是那些提示已经安装的包,也就是提示说not to be installed的包),然后重新执行上面那一长串的代码。安装完了之后记得再执行一下下面这段代码: sudo apt-get install unity-control-center 因为如果你把那些已经安装的依赖包卸载了重新装的话,卸载的时候可能就把系统设置那个功能包也删了(Ubuntu的依赖包就是这么诡异),所以你需要重新安装那个部分。 然后还要安装一部分依赖包,而这部分依赖包主要的作用是在64bit系统下兼容32bit的编译方法。 sudo apt-get install lib32gcc1 libc6-i386 lib32z1 lib32ncurses5 lib32bz2-1.0 第三步:安装AMD驱动 (如果你直接忽略了第二部所说的那个依赖包的提示,那么在开始安装驱动之前,你需要安装dkms,语法是sudo apt-get install dkms;如果你是卸载并重装依赖包,就不用再装dkms了) 从官网上下载了4个包,这些包的安装顺序是有讲究的。 首先,在Terminal中进入你放驱动包的目录。(一般来说,在Ubuntu中用浏览器下载的话,都是先放在Downloads那个文件夹下面的) cd path-to-the-package (记住,path-to-the-package是需要替换成具体的路径的,不懂的话可以去百度一下Ubuntu系统命令行的使用) 然后按照以下代码顺序安装(一次输入一行代码): sudo dpkg -i fglrx-core (然后按Tab键可以自动补全名称,下同不赘述)

电商解密之优惠券:B2C平台优惠券该如何设计?

大家对优惠券应该都比较熟悉,有过网购经验的人应该都用过,优惠券也是商家促销一种常用的手段,今天来跟大家介绍下B2C平台优惠券一般都是如何设计的。 优惠券其实本质是一种代金券,用户可以通过各种渠道获得(下单返券、活动领券,系统赠券,线下广告单等),在下单的时候使用,可以抵扣全部或者部分订单金额。 分类方式 现实中我们在各大平台上遇到各种各样的优惠券,这里稍作总结,可以按照如下方式分为3大类。 1.使用方式 个人优惠券:与用户帐号绑定,不可转让,限本人使用,使用时从账户列表中选择,我们绝大多数使用的优惠券都是这种形式。 公共优惠券:不与用户帐号绑定,有代码即可使用,使用时需要输入代码。这种一般在线下推广中用的比较多,广告传单上印号优惠券码让用户输入券码到线上使用。 2.商品适用范围 按照商品范围分又可以分为如下几类,从各种维度对商品进行组合。 整网优惠券:购买所有正价商品均可使用。这种券不限制商品范围,所有商品都可以购买,除了个别商品,这种个别商品一般会在商详上注明不能使用任何优惠券。 类目优惠券:购买优惠券指定类别的商品即可使用,除个别特殊商品。 品牌优惠券:购买优惠券指定品牌的商品时可使用,除个别特殊商品。按照品牌或者品类设置优惠券范围是比较常见的方式。 商品优惠券:购买优惠券指定商品时可使用,这种优惠券一般只针对少量特殊商品可以使用。 客户端专享券:app专享、H5专享等。这种一般在做APP推广的时候比较常用。 平台专享券:自营券、联营券。对于类似京东这种电商平台既有自营商品又有联营POP商品也会存在按照平台区分使用的优惠券。 3.是否有使用门槛 现金券:不限制订单金额,可以直接使用。 满减券:订单金额需要满足一定的最低额度才可使用,例如:满100减10元优惠券。 发放渠道 对于这些优惠券又有很多种发放渠道,总结来说大概有以下几类。 1.用户主动领取 用户通过活动页主动领取,这是最常用的券的获取方式。一般是在活动页面或者是商详页上。下图为京东的领券中心,将所有的券聚合在一起方便用户挑选有需要的券。 2.客服发券 为安抚、补偿客户,客服通过运营后台给指定用户发券。这个渠道知道的人应该不是很多,一般出现售后问题时并且是平台商自己的责任,客服为了安抚客户会给客户一定的补偿,这种补偿一般都是现金券。 3.系统发券 运营通过后台批量发券,通常是通过搞外部活动,收集到参与活动的uid或手机号进行定向发券。不知道大家有没有这种体验,一般在大促之前,我们之前注册过的各种电商平台都会给我们推送N多短信,提醒我们说“给您的账号里面发送了XX元优惠券,请在XX日期前登陆XX网站尽快使用”。 4.促销系统发券 单品赠券 这是一种促销方式,购买某个商品赠送指定优惠券。 满返券 这也是一种比较常见的促销手段,提升复购率的一种比较有效的方式,通常是在购买特定范围的商品达到一定的金额后即自动返给用户特定的优惠券,这种券一般都是满减券。 优惠券生命周期 上面介绍了优惠券的几种常见类型和发放渠道,下面来介绍下优惠券的生命周期,基本上就是经过了创建、投放、领取、消耗/回收、统计分析。我们按照这个生命周期看下每个环节如何设计的。 创建券流程 制券的流程涉及到优惠券具体有哪些属性,正常制券至少应该包括如下几个信息: 资源投入方:即谁来提供这批券的资源。 券的类别:私有券 or 公共券。 优惠券的名称:这里可以根据活动进行定制。 优惠券的类型:满减 or 现金券。 优惠券的面值,若是满减券的话需要达到条件的满减金额是多少? 发行数量:即这个批次的券一共要发放多少张? 优惠券的生效时间:这个比较好理解了,就是券是从什么时候生效到什么时候失效。 用户限领次数:一个用户最多允许领取几次,一般情况下一个用户都是只允许领取一次。细致点还会再分每天用户可以领取几次。 参与商品:这里就要确定下这个优惠券使用哪些商品。可以按照上面提到的几个维度进行筛选,例如按照品牌或者品类进行筛选商品范围。 这里还要考虑个稍微复杂点的场景是排除商品,可能某个品类里的商品绝大多数都可以使用这个优惠券,但是个别商品不能使用,可能是爆款或者是毛利比较低或者是国家政策等等原因,这个时候需要允许增加一个排除的范围。 投放券 投放渠道还是比较多的,上面也提到了几种主要领券的方式。 领券 领券对于用户来说比较简单,就是点击下鼠标领取优惠券,但实际这个简单的动作后台是有大量的逻辑需要运算。 用券 优惠券的用券场景主要在订单确认页,在订单确认页一般会根据用户选择的商品提示目前用户的优惠券账号里有哪些券可以使用。 因为每张券都有一定的使用门槛,或者是限定某些商品范围的商品才能使用或者限定满足一定金额的商品才能使用,所以尽管你的账号里面有很多优惠券,但在每次确认页结算时会由于你购买商品的不同导致你可以使用的优惠券也不同。这里会给用户造成比较大的迷惑,我账号里面有10张优惠券,每次结算的时候都需要用户自己去计算这次可以使用哪一张比较划算,对小白用户来说挑战还是比较大的,所以主流的电商平台都是帮用户计算好,根据用户选择的商品结合用户账号里的优惠券列表进行计算,帮助用户选出本次订单可以使用的优惠券。 具体的计算可用优惠券流程具体如下: 在查出可用券后真正用券的流程相对比较简单,提交订单后将用户选择的优惠券进行扣减。这里涉及到一个扣减优惠券的时机,是在生成订单的时候就进行扣减?还是用户支付后进行扣减?这个作为一个讨论的问题,有兴趣的可以留言交流下。 统计分析 发券的目的是为了提升销售,那么发的这些券到底有没有提升销售?对毛利率影响如何?每张订单用的这个券是谁发的?给谁用了?这都是需要进行一些列的事后的分析,这样才能计算出来这批券发的是否有意义,这里涉及比较多的财务核算的流程,本人对此领域不太擅长,为了避免误导大家这个流程就不过介绍了,有内行朋友欢迎留言指教。

加密数字货币的开发技术介绍

要问当前所有区块链应用中最火的是什么应用,非加密货币莫属。看看各个跟区块链相关的讨论组,整天热火朝天地讨论的是各种币的行情,即使是技术讨论组,除了一些热门讨论外,最吸引注意的莫过于本币的涨跌还有各种代币的ICO了。 首先,加密数字货币是什么鬼?他首先是一种数字货币。早在比特币出现之前,“数字货币”、“虚拟货币”、“电子货币”等就已经出现了。近年来,比特币出现,加密(数字)货币正式诞生,随之而来是类似莱特币、瑞泰币、以太坊、狗狗币、比特股、瑞波币、点点币、元宝币等等几千种加密数字货币。加密数字货币使用密码算法的数字货币,现指代英文Cryptocurrency,他最主要几大特性是去中心化、加密解密技术、区块链技术、共识机制,这些技术相互支撑,通过共识机制成为一个整体,实现了加密货币特有的安全、公开、可追溯的支付和交易。 加密数字货币的核心技术价值是区块链,正如各种法币有国家信用背书一样,区块链承载的就是信用,是一个无需实物抵押、不需政府或金融机构担保的信用。如果没有区块链,包括比特币在内各种加密数字货币也会变得一文不值。 加密数字货币目前有三种主要场景,一种就是数字货币,用作流通和结算;第二种是为了在各自网络中支付特定的操作,是交易和使用相关区块链资源过程燃烧的燃料(Gas),用户只是使用其计算能力来接收它,以便验证交易并促进它的发展;第三种是作为产品或社区运营的激励机制和运营工具,也就是代币或虚拟货币的角色。可以说,加密数字货币对于很多去中心化的应用的作用还是很大的。 回到这次主题,Elwin就加密数字货币这个区块链典型应用,简单介绍一下他的的相关开发技术。 一、知名的加密数字货币的技术体系 下面介绍一下目前几种知名的加密数字货币的技术体系: 比特币: 比特币技术,符号为BTC,共识算法为PoW,工作量证明算法中使用SHA-256加密算法,发行方式为挖矿,矿机支持,总量恒定2100万,区块时间10分钟,开发语言C++。 莱特币: 比特币技术,旨在改进比特币算法技术,符号为LTC,共识算法为PoW,工作量证明算法中使用Scrypt加密算法,发行方式为挖矿,矿机支持,总量恒定8400万个,区块时间2.5分钟,开发语言C++。 未来币: 未来币是一种全新设计和开发的二代币,符号为Nxt。未来币是一种纯 POS 币,使用透明锻造(transparent forging)的方式进行新区块的锻造。Nxt是且是第一个100%的股权证明(PoS)机制的电子货币,Nxt不再通过消耗大量的资源“挖矿”产生新货币,而是通过现有账户的余额去“锻造”区块,并给与成功“锻造”区块的账户交易费用奖励。PoS算法的这一特点,使得它足以在智能手机或者是树莓派这样的小型设备上运行。它已经通过IPO的方式完成了所有币的分发,货币总量 10亿,区块时间60秒,开发语言JAVA。 以太币: 比太坊技术,符号为ETC/ETH(不同分叉) ,共识算法为PoW,使用的工作量证明算法叫Ethash(Dagger-Hashimoto算法的改良版本),发行方式为挖矿,矿机支持,支持在树莓派上运行节点。以太币(ETH)作为推动以太坊平台上分布式应用的加密燃料,将会通过挖矿的形式每年以不变的数量发行。每年发行的数量是预售以太币总量的0.3倍,通胀率每年递减,最新ETH区块时间16秒,开发语言GO。 比特股: 比特股技术,核心账本采用石墨稀技术,符号为BTS,共识算法为DPoS,货币总量为37亿。预挖矿方式发布(初始的比特股BTS由两部分组成,一部分由PTS持有者转股而来,另一部分由挖掘产生,并且整套系统还在不断的为持有BTS的投资者分红),比特股通过定期出售分发初始货币,Counterparty利用烧毁证明(POB)发行货币,BTS除了作为交易费用和激励机制外,也是资产交易的重要抵押物。区块时间3秒,开发语言C++。 瑞波币: 瑞波技术,符号为XRP,共识算法为瑞波自有共识机制,采用OpenCoin(现在的Ripple Labs)原创算法,货币总量为1千亿,预挖矿方式发布,一半是创始人拥有,一部分批发給交易网关,小部分逐步发放公众,让他们来推动Ripple项目,开发语言C++。瑞波币是世界上第一个开放的支付网络,通过这个支付网络可以转账任意一种货币,简便易行快捷,交易确认在几秒以内完成。值得一提的是,瑞波币的另外一个分支恒星币(XLM),他是由Ripple创始人之一的Jed创建,恒星币是基于ripple代码修改创建的恒星支付网络中的基础数字货币,总量为1000亿,每年增加1%。恒星支付网络以恒星币为基础货币,用户能够通过其转账任意一种货币,跟瑞波的主要区别是他的目标针对全体大众用户,目前处于技术完善阶段。 点点币: 比特币技术,符号为PPCoin,简称PPC,名字取自P2P货币的意思,即点对点货币,PPC的研发团队和质数币XPM的研发团队为同一团队,技术实力强劲,为业界公认。采矿方式混合了PoW工作量证明及PoS权益证明方式,矿机支持,区块时间为600秒,PPC采用SHA256算法,在BTC的基础上进行了改良和优化。PPC最大的贡献在于它原创了POS利息体系,防止通货紧缩,货币总量无上限,通胀1%每年,开发语言C++。 元宝币: 太一科技开发,符号为YBC。元宝币最初算法源自于当时较为创新的数字货币雅币(YAC),雅币的算法又是在点点币(PPC)的基础上进行的修改,老元宝采用的是基于Scrypt-Jane的POW算法。到第二代元宝币调整了POS利息递归机制,第三代元宝币创新发明了VPOW机制,新元宝将彻底停止POW挖矿,而采用纯POS方式来维持网络,币的分发将采用VPOW的方式进行。VPOW分发机制又被称为虚拟工作量证明机制,具体是指利用其他币的POW挖矿算力来为元宝币提供类似POW的公平数字货币发行机制。通过应用VPOW分发机制和“八宝池”配股计划,增加了市场上的元宝币买盘,元宝币在市场上保持了更加充足的流动性,维护了币价,完成了公平的分发,能够促进元宝币应用的平稳发展。采用主节点分发机制(主节点分发利息),可以促进节点网络健壮、高可用性。货币总量300万,区块时间60秒,开发语言C++。 达世币: 达世币是一款支持即时交易、以保护用户隐私为目的数字货币,采用比特币技术分支。达世币符号是Dash,是一种为匿名而生的币,他通过匿名技术,使得交易无法被追踪查询。无预挖,基于11种加密算法x11算法(blake, bmw, groestl, jh, keccak, skein, luffa, cubehash, shavite,simd, echo)超级安全哈希运算。它的区块奖励也和大多数山寨币不一样,它的区块奖励由公式自动确定。采用类似于PoW+PoS的混合挖矿方式,Masternodes获得10%的挖矿奖励。首次引入暗重力波(DGW)难度调整算法保护区块网络。总量约2200万枚,区块时间2.5分钟,开发语言C++。 二、加密数字货币的基础技术体系 货币的核心基础是信任,这里有基于实物如黄金的信任,更多基于国家背书的信任,只有保证了货币的价值稳定和价值存储能力,才使货币获得了人们的信任。 在虚拟和数字时代的,除了解决信任问题外,网络安全是数字货币的另外一个关键因素。比特币之前的任何货币,无论是物理实体黄金,还是电子化的法币,都不存在网络安全的问题,但黑客攻击和破解、技术垄断这些不稳定安全因素却极大制约着数字货币的发展。数字货币对金融安全提出了更高的要求,一方面,数字货币去中心化的特性淡化了中心化管理和机构监管,出了问题不容易刹车和纠正(如the DAO事件的处理),另一方面,区块链和数字货币这类创新金融体系尚未经历过多少风雨,在应对大数据冲击、黑客破坏、网络攻击等方面略显力不从心。 加密数字货币的目标就是要建立一个去中心化的自动运行的经济系统,应具备可流通性、可存储性、可离线交易性、可控匿名性、不可伪造性、不可重复交易性、不可抵赖性七个特性,而加密数字货币的技术基础区块链,具有不可篡改性,所有的账本都是公开透明和可追溯性,他基本解决了数字货币流通中的这些技术问题。但对于数字货币的真正落地和运行,他对信任和网络安全两个最关键的核心因素有着更高的要求。这两个因素具体到加密数字货币的技术基础体系中,就是支撑这个系统的发行和维护网络安全的机制。其中机制有多种,如PoW,PoS,DPoS等,各有利弊,PoW有高耗能和51%攻击的风险,而PoS和预挖矿的方式会导致大量的币保留在创始人和少数人中,信用基础不够牢固,流动性不确定,因此往往会采取综合的机制,目前很多研究认为,“工作量证明机制Pow+权益证明机制Pos/DPoS”的币,才是最为完美的。采用哪种这个机制策略,将很大程度决定你的数字货币发展的前景空间。 三、搭建加密数字货币的技术平台 前面介绍了几个知名的加密数字货币的技术体系,大家是否已经由跃跃欲试去搭建自己的加密数字货币呢? Elwin推荐的有两套技术路线可以选择,一个是自己通过搭建区块链平台去构建自己原生的数字货币,另一个方式是基于现有的区块链公网去创建数字资产和数字货币。 方案一,构建自己原生的数字货币,从比特币和各个竞争币(山寨币)大家可以看到,这些数字货币采用的技术体系不外乎就是比特币、Ripple、比特股和未来币等几套技术体系或这些技术体系的改进或分支版本,这些技术体系,大家可以参见Elwin上一篇文章《区块链主流开源技术体系介绍》的几大主流开源区块链体系的介绍。这些原生数字货币的用途主要包括:交易和支付、汇兑手段、抵押手段、激励机制、权益证明和资源控制等,另外还有不同区块链体系自身带有一些特性的扩展。 就主流区块链开源技术体系来看,Elwin推荐的是比特币或其分支、Ripple、未来币、比特股、以太坊五种技术架构,如果你是单纯的货币业务,不考虑以后其他衍生产品和业务扩展,更推荐比特币、未来币和Ripple。每套技术体系的代码可以在相关数字货币在GitHub上公开的源码进行修改,从而达到制作属于自己的加密数字货币。 开始制作我们自己第一个的数字货币了,首先我们要从git上下载某套区块链体系的源码,比如选择比特币的主干代码,我们从https://github.com/bitcoin/bitcoin下载好相关源码,同时准备好对应的编译环境(C++的建议在Linux)和安装好对应开发环境和工具(每个体系网上都有详细的安装教程文档)。 不过系统和开发环境的搭建、程序编译等过程都比较繁琐和有比较多坑(很多跟环境、依赖库和版本有关,请留意),不建议普通用户自己制作。对于开发人员,第一次可能要预计2-3天的安装配置时间。 拿比特币开发来说,他是Qt的开发环境,下载好源码并配置好环境后,在Qt Creator内打开该比特币核心的源码,配置相关文件和编译器,开始尝试编译比特币核心的客户端。这一步走通后,才可以放胆去改造成自己的数字货币。打开各个源文件,找到对应的地方调整参数即可,如调整每个区块出币数,总产量,调整难度等等,然后就到最关键的点,就是改名为自己的币名了,这时候通过全文搜索bitcoin或其他比特币的字样,改成你自己货币的名称,比如ElwinNB之类,想怎么取名就怎么取名,别忘记在资源文件夹里替换掉相关图标。如果一切顺利,经过重新编译,你的新币就顺利发明了。 前期很多山寨币,就是这个套路,基于比特币进行这里修改文字那里调整一些参数,很多并不理解整个体系和原理甚至没有阅读主要代码,后来大家都成为老司机后,新的币种会考虑一些微创新,在共识算法和加密算法作一些调整和优化,创新为自己的新算法。Elwin觉得,数字货币也是一种互联网产品,且属于一个比较复杂的技术体系,即使你是基于别人的成熟代码进行修改,需要不断的迭代更新和维护的,纵使只是简单的版本跟随,你总要投入技术力量去跟进,因此我之前提的只是入门的尝试,真正要维护你的数字货币,你还得好好去阅读代码,了解架构和原理,根据你的业务和新币特性去不断优化和调整。 当然,现在这些简单套路都走不通了,现在要发行新的数字货币,要么你算法真有独有优势和特点,要么基于数字货币下的垂直业务和游戏规则有很好的模式(比如电竞币或文化币),否则大家很难去关注和拥护你的新币。 方案二,是基于现有的区块链公网去创建数字资产和数字货币。就主流区块链开源技术体系来看,基本除了Factom外,其他的技术体系都可以用来创建数字资产,也就是可以支持加密数字货币的创建。 以太坊:基于以太坊的智能合约,我们可以轻松地创建自己的数字资产或数字货币,除了创建数字货币和货币交易的基本功能外,还支持货币的中心化管理者、数字货币的黑白名单、货币增发、挖矿实现、代币和其他货币的自动兑换。开发语言是Solidity语言。在以太坊的官网首页上,给出了三个智能合约的DEMO:虚拟货币合约Token、众筹合约Crowdsale、去中心自治组织合约DAO,其中的虚拟货币合约Token就可以作为你的加密数字货币的最好的参考代码了。 Ripple和比特股:就技术来说,基于Ripple和比特股的公网,你都可以轻松创建和管理自己的数字资产或数字货币,不过目前Ripple公网好像限制了主要针对2B业务,只能給银行和金融等机构作为网关,这样一般玩家就无法在网关中创建自己的数字资产了。在比特股的去中心化的链上交易平台中,我们看到锚定各类资产的数字资产在比特股被发行、相互配对交易,基于比特股区块链的各种网关为区块链上的虚拟世界与物理世界的各种资产提供对接。不像比特币,比特股可以扩大范围和支持多个完全独立和并行的块。因为每个块链可以交易捆绑在其它块链上的比特资产衍生品,块链之间的价值移动是很容易的。比特股的资产发行功能,让全球用户能以很低的费用发行自己的数字资产并与特定的现实资产进行锚定,进一步在区块链上实现交易转让,在这个过程中没有中心化的人为因素干扰。比特股的资产发行和管理功能非常强大,黑白名单、高级多重签名、喂价输入、抵押发行、内盘与外盘互动,低延时、智能合约等待条件基于一身。使用Ripple和比特股发行数字资产不需要另外的代码开发。 布比:布萌是基于布比区块链的数字资产平台,发行在布萌平台上的数字资产,可以在资产流通方之间建立起多方信任,保证用户购买和使用的数字资产的真实有效性。布萌拥有一套标准化协议,在布萌平台上开发的应用之间无需对接,即可实现布萌用户之间数据信息流、价值流互联、互通。同时,发行在布萌平台上的数字资产,可以实现点到点的传递。对接布萌相对比较简单,布萌为企业和开发者提供资产发行、资产转移、资产查询等业务,支持多种开发语言。 方案二中,以太坊方案优点是比较灵活和强大,基本可以任意编写你的数字货币及其衍生的业务体系,缺点是的其中币种运行和流通交易,需要消耗原生数字货币(Gas费用)的,这是值得考虑的;比特股部分,数字资产的发行和管理功能很齐全,但也会一定程度局限在比特股平台中,且也需要交易费用(Gas费用);布萌平台的优点是简单易用和免费使用(无Gas费用),缺点是提供接口的功能不够丰富。 方案二基于已有区块链公网的数字资产搭建,在方便的同时,好处是不需要类似方案一那样,一定要考虑组建自己的节点群,但缺点是一定程度限制在各个区块链体系框架中(其实大部分情况下都满足到你的需求了),且区块性能会收到公网的性能制约(另外也要考虑一些区块链公网的停止维护或硬分叉的风险)。 四、数字货币应用层开发 构建自己原生的数字货币体系后,除了宣传官网和社交媒体外,你还需要对应开发相关的挖矿软件、ICO众筹网站、交流社区、钱包、交易市场等应用层软件。 挖矿软件:这个是针对类似比特币等Pow模式的体系,这些需要对应的挖矿软件,专业一些需要有相应矿机。首先,从git上下载现成的挖矿工具(通常支持sha和scrypt算法)、矿池,改名字编译,部署,也同样直接就可以用了。通常都是C++开发语言。 ICO众筹网站:主要是数字货币的初期资金的筹集,目前比较多的是筹集比特币和以太币,这个可以自己搭建,也可以采用第三方的ICO众筹网站如币众筹。开发语言:主流Web开发语言。 交流社区:主要用来发布资讯和給币使用者交易者交流使用,这个可以直接使用第三方的开源代码进行搭建,这类代码非常多,根据你熟悉的开发语言来选择就是了。开发语言:主流Web开发语言。 钱包:这个非常重要和关键的用户客户端,可以花多些时间好好设计一些这个的UI,提供多终端的钱包。开发语言:主流Web开发语言或App开发语言 交易市场:一般这个交易市场更多是通过淘宝或第三方交易市场来提供,但也不排除你要开发类似的交易市场,来提供給本数字货币与其他数字货币的兑换。开发语言:主流Web开发语言。

Ubuntu安装教程-以我的HP为例

前言: 这是我第一次在CSDN上写博客,从我安装ubuntu开始。安装双系统并不困难,只要你做好了知识的储备就好。这一次我是用U盘引导安装的。 材料/工具: ubuntu的iso镜像,直接去ubuntu官网下载,一般以最新版为好。 UltraISO软通碟,也是以最新版本为好,这是用来把系统镜像导入U盘的软件。 一个3G左右的U盘,里面的资料要备份,到时候导入镜像会被格式化。 开始: step1: 下载UltraISO安装,安装全都是默认选项。 step2: 打开软件,导入iso镜像,点击启动,写入 然后,按照如图设置,其中选择打算写入系统的U盘,最后点击写入。 等待几分钟,刻录完成,就可关闭了。 step3:(暂时没找到图,以后找到再保存) 这是整个过程比较关键的一步,以我的惠普为例,进去BIOS设置U盘为第一启动。 在开机或者重启的瞬间,一直轻按F10(不用加上Fn),进入BIOS设置。 进入System Contiguration选项。 找到boot order选项,通过F5或者F6上下调整顺序,把USB Hard Disk上调到第一顺序,再按F10退出并且保存。 step4: 上一步保存推出之后,系统会自动重启。 进入Ubuntu安装界面。 选择语言–简体中文,然后点击试用Ubuntu。 step5: 安装完成之后,是如下界面: step6: 选择语言,进行如下几个步骤: 选择与windows系统共存,这样会自动为你分配内存,点击安装。 step7: 最后,这是安的状态,到这里就完成了。其他的系统配置,自己慢慢摸索。: