Ethtoken合约
『壹』 公链代币有合约地址吗
有的。
合约地址指的是合约类账户中所包含的地址,具体是指用户在某个支持智能合约的区块公链上创建了合约类的账户,这一类型的账户是由合约地址和储蓄代码共同构成的。此外,在支持智能合约的区块公链上还可以创造一种外部账户,外部账户是公钥和私钥构成。
1、代币合约就是一个映射着账户地址以及余额的智能合约,账户的余额是由合约的创建者定义的,在代币合约中账户余额可以用来表示物理对象,或者其他货币的价值,也可以表示持有者的名望,而每个智能合约都有其对应的一串乱码,这就是合约地址。
2、一个币的合约地址可以用来查看该代币的余额等具体信息,还可以查看详细的合约内容。本质上来说,一个代币合约就是一个包含了一个对账户地址及其余额的映射的智能合约。账户余额表示一种由合约创建者定义的值:一个代币合约也许使用余额来表示物理对象,或是表示另一种货币价值,还可以表示持有人的名望。余额的单位通常被称为token。
3、当token从一个账户被转移到另一个账户的时候,代币合约更新两个账户的余额。如果该token合约允许的话,改变token总体数量有两种方案。token的总数可以通过铸造新token来增加。举个例子,铸造出想要的token到具体的合约地址 。销毁token的另一种方式是将token发送到一个未创建私钥的地址,通常来说就是0地址。这会使得这些token不可用,在这方面,它与销毁token有同样的效果,但并没有减少token的总数。简单的代币合约在一个从地址到余额的映射中保存上述信息。当更多复杂的情景出现时,比如分红,替代性结构或者增补性结构往往更强一些。
『贰』 3.7 钱包、帐户、token、智能合约、action、权限、权重和阀值之间关系
如图所示,右边是EOS Wallet钱包,里面只存放私钥及由该私钥产生的公钥(公私钥对),而且钱包有一个密码,需要输入密码才能解锁钱包,读取私钥。钱包和账户没有直接的关系左边是EOS Account账户,可以把它看成是一个保险箱,里面有EOS Token以及智能合约,而需要转移里面的EOS Token(或者执行智能合约),你需要钱包中对应的私钥来解锁这个保险箱。
创建一个账户的命令是:cleos create account {创建者账户名} {新的账户名} 公钥1 公钥2
其中{创建者账户名}是为这个创建动作支付EOS的账户,公钥1和公钥2分别是两个不同权限的密钥对的公钥。
所以把权限系统加上,图就变成上面这个样子,一个保险柜有两个开关,不过打开后可以进行操作的权限是不同的。2个私钥可以存在一个钱包里,也可以如上图所示存在不同的钱包里(由不同的人控制)。
owner权限是账户的最高权限,可以修改其它权限。
active权限默认可以进行转账等操作,但不能修改权限。
每个保险箱有一个名字,就是EOS账户名。
转账和智能合约等操作的执行都是在Account这个保险箱进行,所以账户名在EOS世界其实是以太坊的地址。与以太坊不同,EOS的账户名不再是一串很长很长的地址,而是一个你可以自定义的英文字母+数字(12345)+符号(.),最长12位,最短1位,全局唯一,先到先得,注册费用还没公布,但据最新的消息,长度不同注册需要的EOS也不一样。
1、创建帐户,首先要创建帐户的公私钥对,公私钥对可以代表对应该账号下的某个权限的权重。帐户使用公私钥对事物进行签名操作,让区块链节点确定事物中的活动是由某帐户的哪个权限授权的。
2、帐户可以部署、加载合约,所以合约是属于某个帐户的,在EOS系统中1个帐户只能有一个合约。
3、Token是由帐户创建和发行的,发行的Token属于帐户。帐户拥有Token,并且可以通过eosio.token合约中定义的活动转账给其他账户。
4、帐户的公私钥对是存放在钱包中,钱包仅仅是一个有名字有密码的公私钥对的容器。
5、一个实际用户可以创建多个帐户,用户通过钱包中的公私钥对管理对哪个账户的哪个权限授权用于执行某个合约中的动作。
6、一个用户可以拥有多个钱包,账户和钱包没有直接的所属关系只有使用关系即某个账户使用了某个钱包存放了自己的公私钥对。
7、一个keosd钱包服务可以管理多个命名钱包,用户可以通过钱包服务提取钱包中的公私钥对其发起的事务进行签名。
8、一个用户可以开启一个或者多个keosd钱包服务。
9、一个钱包中可以存放零个或者多个密钥对。
10、一个帐户可以拥有多种权限。
11、每一个权限都有一个使用该权限的阀值。
12、每一个权限都可以由一对或者多对密钥及对应的权重来控制权限的使用。
13、每一个密钥都会有使用某权限的权重,当拥有的密钥对应的权重累计大于等于阀值即可使用该权限。
14、每个对某个账户的某个活动都会需要对应的账户的权限使用授权。
15、一个合约中可以定义多种不同的活动,账户调用对应的合约来执行不同活动。
综上,我们通过一些列问题的问答来理解账户、钱包、token、合约、活动、权限在EOS中的作用。
问答如下:
1、EOS系统中的主体是什么?答:账户
2、有了账户能做什么?答:做事务
3、怎么做事务?答:通过合约
4、合约包含哪些依赖元素?答:(1)账户 (2)权限 (3)token
5、权限是什么?怎么管理?答:公私钥对,通过钱包管理
6、什么是token,怎么使用? 答:做事物占用了系统资源,需要花费gas(token)。
为了更好理解上述概念,我们不妨举个生活中的例子:
生活中有这样的三口之家,爸爸、妈妈、小孩
- 他们所居住的房间我们看作一个账户,房间都有一个唯一的且可被人为识别的地址(账户名称),例如:某某小区12#1201
- 房间里有很多设施设备(电视、电脑、空调.......),我们把不同设备具有的功能看作智能合约里定义的活动功能
- 如果小孩想看电视(执行合约的动作),需要进入房间的授权(账号权限),能不能进入房间由是否持有爸爸或者妈妈的钥匙(公私密钥)决定。
- 爸爸、妈妈的钥匙存放在各自的有密码的钥匙包(钱包)里。
- 小孩在得到爸爸或者妈妈的要钥匙后(授权),就可以打开电视并收看(执行合约)。
- 看电视需要缴纳电费(token),电费是按照房间地址(账号名称)收取的。
星河公链官网
3.7 钱包、帐户、token、智能合约、action、权限、权重和阀值之间关系-wx5ca1790914ac4的博客-51CTO博客
3.7 钱包、帐户、token、智能合约、action、权限、权重和阀值之间关系 - arm_snow的博客 - CSDN博客
『叁』 比特派 ETH、ERC20 Token 批量转账教程,好用!
功能简介:
比特派的批量转账功能可以将你的ETH或ERC20的TOKEN 同时发送到多个地址(当前最多支持255个)。
优势:
节省操作时间,节省矿工费。
操作教程:
1、打开比特派,在左上角切换到“ETH体系”点击 “批量转账”
2、进入操作页面后,首先确认自己用来付款的的币种、地址。然后点击加号【+】来添加收款方信息。
3、你可以选择【从剪贴板获取】或者【手动输入】收款方信息。
当你选择从剪贴板获取时:
你需要按固定格式提前复制好相关内容,再点击此按钮才可添加成功。
格式为:
地址,金额 (地址和金额之间用英文的逗号分隔,多组信息之间需要换行)
例如:
0xc35f4f66ef......20db8f7d , 0.001
0xfe4503c78......4e4ae1ae , 0.002
如果您要处理的地址较多,建议使用电脑表格软件进行整理,格式如下。
当你整理的地址在表格内显示异常时,选中所有异常的表格,右键选择单元格格式,并将单元格格式选择文本。(不同的软件操作步骤略有差异,核心操作在于将单元格文本格式选择成文本。)
整理完成后,可通过微信等其他软件将内容发送到手机并复制,打开批量转账页面点击加号+,选择从剪贴板复制,即可批量添加收款信息。
当你选择手动输入时:
可以手动输入地址、金额。也可以通过扫码、地址簿添加等方式添加地址。
4、地址信息添加完成并确认无误后,点击确认转账,核对好相关信息后点击确认,即可发出。等待合约确认后,便可查看所有的转账详情。
『肆』 以太坊智能合约能关闭吗
能。
可以访问网站,然后连接上自己的钱包,就会读取钱包中已经订立了合约的Token项,然后点撤销即可。
智能合约让以太坊,去中心化应用具有无限想象力和更强大的生命力。智能合约可以处理各种业务逻辑,来充分地利用以太坊区块链的能力,使得区块链的扩展性更强,从而让以太坊发展成为目前最大的一个区块链开发平台。
『伍』 合约地址怎么用
一个币的合约地址可以用来查看该代币的余额等具体信息,还可以查看详细的合约内容。本质上来说,一个代币合约就是一个包含了一个对账户地址及其余额的映射的智能合约。账户余额表示一种由合约创建者定义的值:一个代币合约也许使用余额来表示物理对象,或是表示另一种货币价值,还可以表示持有人的名望。余额的单位通常被称为token。
当token从一个账户被转移到另一个账户的时候,代币合约更新两个账户的余额。如果该token合约允许的话,改变token总体数量有两种方案。token的总数可以通过铸造新token来增加。举个例子,铸造出想要的token到具体的合约地址 。销毁token的另一种方式是将token发送到一个未创建私钥的地址,通常来说就是0地址。这会使得这些token不可用,在这方面,它与销毁token有同样的效果,但并没有减少token的总数。简单的代币合约在一个从地址到余额的映射中保存上述信息。当更多复杂的情景出现时,比如分红,替代性结构或者增补性结构往往更强一些。
拓展资料:什么是代币合约?
ERC20 合约是通过合约的地址以及可用的token总数来定义的,但通常还提供一些可选项目,也是为用户提供更多细节。比如token的名字、符号、小数位等等。
在深入了解之前,必须明确一点:代币合约没有中心化的登记处,因此无法保证特定名字和符号的唯一性。一旦你创建了一个代币合约,你应该申请将它加入公共站点,如Etherscan,MyEtherWallet 以及 CoinMarketCap。当然,确保符合网站上的说明,可以最大限度提高申请被接受的机会。
代币合约的名字是代币的完整名称,比如“My token”。名字长度没有限制,但是太长的话在某些钱包应用中可能显示不完整,所以最好保持名字的简洁。
代币合约的符号是代币的符号,比如“MYT”。大体相当于股票行情自动收录机。尽管没有长度限制,但通常都是三四个字符长度。
小数位这个概念通常容易混淆,通过解释还是很容易理解的。小数位代表一个token的可分割程度,小数位可取值从0(完全不可分割)到18(几乎是连续的),甚至还可以更高。技术上讲,小数位的数字就是显示在屏幕上小数点后面跟着的数字。存在小数位的意义在于以太坊不处理小数,将所有的数字价值都当做整数处理。
『陆』 蝙蝠token已过期啥意思
现在对Token比较通行的理解是将其看做“可流通的权益证明凭证”,简称“通证”。这个定义虽然相对准确并逐渐受人认可,但领域外的人并不熟悉。而Token本身的存在机理仍存在极大争议。
token是什么意思(token已过期错误啥意思)
本文将从Token和区块链的关系入手,对Token形成的过程、Token的价值来源、Token和股权的关系等问题作出分析。
一、Token与区块链的关系及其定义
区块链技术可以用来不可篡改的保存两类信息:一是描述、定义各类资源(资产)状态的信息。例如一个人的信用记录、一件商品、一个房产、一篇文学作品等;另一种是描述资产交易过程的信息*。总的来说:
1、Token必然存在且仅存在于有交易的区块链项目中,并作为交易的基本单位。
2、拥有Token等同于拥有对区块链上某类资源的索取权。例如拥有btc token等同于拥有转出btc的权利。拥有eth token等同于拥有转出eth 或支付交易费用或创建智能合约的权利。拥有eos token等同于拥有投票权,使用一定量计算、存储、带宽资源的权利。
3、从个案分析的角度,存在只保存第一类信息的项目,例如传统互联网、银行、政府在国际贸易、商品溯源、公证中的应用。虽然在此类项目中可以不使用,也没有必要使用Token,但从区块链经济整体来看,两类信息缺一不可。因此区块链与Token是共生的关系。
*注:Bitcoin的UTXO模型使得在具体实现层面只有交易历史没有账户余额,但从抽象的去看,Bitcoin仍然是有余额和交易记录两类信息。
二、Token的形成
在涉及交易(或称价值转移)的区块链项目中,交易信息因为不可篡改性和公开性,使得信息本身就可以在不需要第三方监督的条件下拥有价值传递的含义。案例说明如下:
“Alice给Bob一支花”,是一条文本信息。
在非区块链环境中,只有在面对面交易中这句话才有价值传递含义,因为交易双方可对这句话的执行情况进行当面澄清。但在没有中介监督的情况下,Alice非面对面的向Bob说这句话,因为ALICE 可以随时否认或篡改说话的内容,所以这句话并不具备价值转移的作用。
在区块链环境中,所有参与者在发送信息前首先要达成两点共识:1、对信息代表意义的共识,例如上述文本信息中,花的种类,送花的时限等等(因举例涉及链下实体,所以为讨论简便,假设链上和链下数据具有完全可信的预言机支持,均为不可篡改的真实信息)。2、如果违背了第一条后的惩罚措施,例如扣减信用、金钱惩罚、甚至永远将不诚实者排除在外。
在这个共识基础上,Alice签名发送上述文本后,如果并没有真的行动。那么在不可篡改信息证实下,所有参与者在无限的未来中,都会知道Alice是一个不守信用的人。并将采用惩罚机制惩罚她。
我们将上述文本抽象之后,假设这个区块链项目的用途是记录Flower交易,并发行了Flower Token, 每一枚Token代表对一支花的索取权。那么上述文本信息就变成了结构化信息:
“A trasfer 1 unit Token to B”。
至此,我们可以看到在有交易的区块链项目中,无论是否设计专门的Token变量;是否有可进行Token转账的钱包;是否有可在二级市场交易的Token;Token都天然客观存在。
三、Token 的价值内涵
从前述分析我们可以看出,Token的全部价值来自于共识。参与者赋予Token什么样的价值,它就代表了对哪些资源的索取权。*对Token的市值分析,不同项目都应根据其经济模式采取不同的分析模型和框架。
注:狭义上的共识是写在系统中由全部诚实节点必须共同遵守的约定,例如EOS对计算资源的索取权;广义上的共识还包括部分人对Token用途的认同,例如1Btc在生态治理层面不代表任何资源,但逐渐有更多人愿意用Btc换取更多种类的经济产出或法币。
1、Token的价值来源:
(1)以太坊ERC20代币的数据结构统一,但不同项目的Token市值却完全不同,刨除那些区块链技术公司发行的ERC20,单纯去看传统公司的Token应用可更为清晰看到Token的价值来源。以Cindicator为例,该项目现在提供不同等级和丰富度的智能投顾研判信号,以持有Token(CND)数量的多寡作为Token持有者使用相应服务的门槛。Token价值完全由项目方本身在智能投顾领域的价值决定。
(2)赋予Token价值的绝不仅仅是创始项目方,而应归于全部生态参与者。也就是说Token所代表之物是由变化的群体,和他们变化的共识决定。举例来说,EOS ERC20 Token由官方赋予的价值是有权以1:1比例映射到EOS.IO系统中的持有人分布表中。在映射后,ERC20 Token就不再具有官方赋予的价值。但是这个代币不会消失,如果持有人为其赋予了新增的例如说EOS创世持有人纪念Token,那么它就有了新的可流通的意义。
2、Token与股票的关系:
(1)Token和股权并无必然联系,Token是否可以代表持有人对公司的权益由发币项目公司决定。但迄今为止,Token仍然可在全球范围内自由(随时、随量)转移,并没有项目完全限制Token在不同转移人之间的条件、流通范围,须披露内容等,因此实际上与证券仍有较大的区别。
(2)区块链经济下将有越来越多的经济活动从大企业、政府中释放出来,由小企业、个人在市场和商业环境中由智能合约协调完成。在这样的未来经济形态下,本文认为对企业来说,以生态权益为导向将比以公司权益为导向更符合公司利益。换言之,代表生态价值的Token将极大挤压股票的生存空间。但只要公司这种组织形式还在,那么股票就仍然会与Token处于共生状态。值得说明的是,在技术层面,股票的记录和转移也可能会采用区块链技术来完成。
附、Token几种译法的辨析
按Wikipedia释义,从经济价值角度看Token,第一类含义是可用来代替钱使用的金属塑料小圆片,即“代货币”,例如赌场中的筹码。第二类含义是准钱币,即硬币或纸币以外的代币奖章、临时通货等;第三类是可用于兑换商品或服务的代金券和礼品卡。另一方面从信息技术角度看Token,指的是可操作某类计算资源的对象(Object,计算机术语)。
Token现在主要译法有币、代币、通证等。首先,我们应对谨慎将Token视为货币的倾向。一个原因是货币作为一般等价物具有法偿性,可以无条件在一国内使用,具有货币的完整功能(价值尺度、交易媒介、价值储藏)。Token不具备无条件使用的功能和价值尺度功能,在逻辑上不具备货币的全部功能。另一个原因是“币”让人先入为主的认为Token代表的是金钱,极大限制了Token的含义范围,容易令人忽视Token可以是所有链上资产交易的单位,可以代表对所有链上资产的索取权。
通证的全意是可流通的权益证明凭证,是现在最为准确并逐渐受人认可的翻译,但领域外的人并不熟悉。而代币,从字面意义上讲,“代”指的是对某类资产或资源的索取权凭证;“币”指的是可流通。例如我们日常生活中的游戏币,一是说可以享有使用游戏设施的凭证;二是说游戏币可与他人交换。所以代币的译法实际上与通证同义,可以混用。
『柒』 关于COIN和几种TOKEN的分类
在币圈我们经常问别人最近有没有买什么币,但是这个币其实有可能是COIN,也有可能是TOKEN。所以本文稍微捋一下COIN和TOKEN的定义。
COIN: 指得是作为支付媒介的数字货币,比如BTC、BCH、LTC以及DASH、XMR、ZCASH等等。它们的使用场景只是价值传输而已,除此之外并没有其他的应用场景,它们只是作为一个去中心化的银行存在着。COIN也是目前区块链世界中的第一大应用,充当着价值传输和价值存储的功能。
TOKEN有以下两种:
Utility Token:即功能类Token,这种Token是有使用场景的,使用它可以购买某种服务,比如在以太坊上我们需要买一些ETH才能使用以太坊上的计算能力,我们购买一些SC才能使用它的云服务。
ICO是被证实了的区块链能够有效提供的应用场景,所以ETH这个TOKEN才能成为当今第二大市值的虚拟货币,在2017年的时候,以太坊和比特币一样被认为是可以当作价值传输的媒介,甚至同时充当了价值存储的载体。但是直到2018年之后ICO逐渐遇冷,以太坊的市值也一再萎缩,以太坊每年都会增发一定比例的ETH,但是当ICO的规模跟不上ETH的增发数量的时候,价格就会下跌,这就是为什么V神考虑吧ETH总量设限的原因。
Security Token:即证券类Token,这种Token算做是证券,所以是要归证监会(SEC)管的。关于判断是否为证券由豪威测试(Howey test)决定:
1、Is it an investment of money or assets?
是不是属于金钱或者资产的投资?
2、Is the investment of money or assets in a common enterprise?
这笔钱或者资产是投资到一个共同的企业里面吗?
3、Is there an expectation of profits from the investment?
是否期待从这笔投资中获得利润?
4、Does any profit come from the efforts of a promoter or third party?
这笔收益是不是来自于发起人或者第三方的努力?
满足了以上四个条件,就属于证券类。
2017年六月美国证监会宣布DAO Token属于证券。因为购买DAO之后,如果有利润的话,那么DAO持有者的的确确是会有分红的。
现在很多不同的交易所的平台都发行了自己的平台币,比如说币安币BNB,其实大家都知道币安币的价格高低和币安这个平台的发展息息相关,但是同样的BNB可以抵消平台交易的手续费,并且可以使用BNB购买各种虚拟货币。这样看起来真的是属于Utility Token。而且因为法币入口不稳定,交易所就自己创造出一个币,让大家都先花钱买它的币,也就是先把钱存到它那。这同样规避了一些监管的风险,比如用BNB购买虚拟货币的时候,我使用的是BNB(算是一种商品)购买ETH(另一种商品),用商品买商品,这样可以规避掉很多监管风险。
但我认为这仅仅是其中一个功能而已,我认为大部分人购买BNB都是因为看好币安的未来。币安也是想和用户一起发展,这本质上是在投资企业。但是币安从来也不会承诺说公司发展好了,我会给持有BNB的人一些分红,因为这样的话这就触及了豪威测试(Howey Test)。币安用一种规避的方法,即用公司的利润回购BNB,然后把这些BNB给销毁掉,这样市场上供应就变少了,BNB自然升值了。
归根结底我们这些购买BTC或者ETH的大部分人是都在炒币,都是想要通过买卖获得利益。而在现实意义中,我们购买ETH的行为就像黄牛屯某个明星的演唱会门票,我们假设还有很多人想看演唱会——还有很多人想通过购买ETH使用智能合约,我们只是在假设全世界还有很多人会去使用区块链。我们是在购买大量的演唱会门票而在等待门票涨价,但同时我们也可以去使用它去看演唱会。
这是因为数字货币同时具有功能性和投资性并且全球流通,它不像证券只能用来投资不能被使用。这是一种新兴事物,还没有相关的法律去完善它,任何一种新兴的东西,它总是和以前的东西不一样,所以法律总是滞后的。
参考资料:
1, 全球区块链顶级会议 TOKEN SUMMIT 2017 一手信息解析
2, http://8btc.com/thread-147990-1-1.html
3, https://mp.weixin.qq.com/s?__biz=MzU3MDQzMzEzMg==&mid=2247485059&idx=1&sn=&chksm=9b9573&mpshare=1&scene=1&srcid=0406bUvDMNmuvOW3MWWTshfw&pass_ticket=aLDIIGSM3tYo%%2FH4Yn8hF%2B#rd
4, https://medium.com/startup-grind/understanding-the-difference-between-coins-utility-tokens-and-tokenized-securities-a6522655fb91
5, https://www.chainnews.com/articles/362600636952.htm
6, https://medium.com/@bonpay/security-tokens-vs-utility-tokens-1aa7531aabe8
『捌』 链下支付协议:微雷电microRaiden深入分析
microRaiden是雷电网络的简化版本,是一种 低成本、可扩展、低延时 的 链下微支付 解决方案。 他将雷电网络中链下支付网络简化为 P2P单向微支付通道 , 但保留了快速支付的优势,降低部署难度,简化支付流程。
微雷电基于以太坊开发, 是以太坊的二层支付协议。兼容ERC20/ERC223标准token接口,因此,可以直接将现有已部署在以太坊上的token和微雷电协议对接,而不需要进行token数据的迁移。
microRaiden是针对N对1 的商店模式而专门优化的一种支付通道,特点如下:
针对上述特点,以及微雷电设计初衷,它适用于下面的应用场景:
场景举例:接收者提供很多网络资源(jpg, url, txt等等),每个资源可以分别设置单价。用户访问该资源时, 自动创建channel,并自动从channel的押金中扣去该资源的价格,之后也可以通过该channel多次访问资源,每次访问自动扣除相应的token。
microRaiden包括客户端和服务端,客户端即sender,每个sender都分别对应一个客户端,服务端即receiver。
微雷电客户端包括Session Client Channel等几大数据结构,关系如下:
上面的图是官方生成的, 了解一下3个主要结构的主要功能就行:
客户端主要功能如下:
余额证明的含义是sender对当前channel的 最新一笔支付数据 进行签名,证明sender已经对购买的资源进行了支付。 这里的余额实际上指的是该channel上已花费的token数量。
在初始化Client时需要同步链上的channel信息到本地。 同步流程如下:
该接口可以作为获取channel的唯一入口, 其中包含了查询已存在的channel, 新建一个channel的接口调用封装。
实现链上channel相关的操作。
一句话概括: token转账动作自动触发创建channel
一个sender如果希望和指定的receiver建立一条支付channel,并在这条channel上存款10token,只需要给ChannelContract合约地址转入存款数目的token即可。注意: 所有地址的余额是保存在token合约中的,这里的地址不限于个人账户地址,也可以是普通合约的地址。
创建支付通道是由微雷电客户端发起的,流程如下:
对于ERC20标准的token, 处理流程如下:
需要2笔交易: approve和createChannel
充值和创建类似, 只是data数据变成了:
同样, 兼容erc20的流程如下:
需要2笔交易:approve和topUp
sender和receiver都可以发起channel关闭的请求,但是处理流程稍有不同:
Session是客户端的核心,通过它可以完成购买资源的操作。
python的requests包是一个优秀的http操作包,可以方便地进行http交互操作,比如:
为了更方便的在微雷电中使用,对其进行扩展, 重新封装了 get,options,head,post,put,patch,delete 这些requests接口。
在微雷电的客户端中包含该扩展后的包,可以在http请求资源的同时,进行token链下支付操作。
例如post接口:
其中url是请求的资源路径;
最后由Session.request执行。这个Session是对应每个sender的一个实例;
其中会不停地向服务器请求资源( _request_resource ),直到返回结果或失败。
上面请求资源的动作,就是从receiver中获取资源并在channel中支付钱的过程。
流程如下:
4.2.3 签名算法是: 将type和name组成字符串形式的list,进行keccak256,将data组成list进行keccak256, 两者结果再组合再一次进行keccak256 。
4.2.4 根据被签名的数据和签名结果恢复出签名者地址
4.3 如果验证通过,并且response.header中的SENDER_BALANCE和本地保存的sender余额一致,表示: 服务器试图将最后一次未经确认的付款伪装为确认付款,返回失败 。如果余额不一致,表示: 服务器提供了不同的channel余额证据,本地采用该最新的余额,本地更新余额和余额签名 。
4.4 如果验证不通过, 服务器 没有 提供不同的channel余额证据,将本地余额更新为0.
4.5 无论验证是否通过, 都需要进行下面的支付操作。
更新sender在该channel的balance和balance签名。
后端服务提供付费资源管理及支付通道管理。启动前需要传入下面参数:
启动过程如下:
付费资源包括静态资源,动态资源,添加方法如下:
定义URI资源的支持的http方法:
资源的价格是固定的。
添加资源:
通过/echofix/foo 就可以获取资源, 只有当支付5个token后,proxy才会返回foo给用户,如果没有支付,则会返回 402 Payment Required
定义URL资源:
domain参数指定获取内容的远端URL
『玖』 【ETH钱包开发04】web3j转账ERC-20 Token
在上一篇文章中讲解了ETH转账,这一篇讲一下ERC-20 Token转账。
【ETH钱包开发03】web3j转账ETH
1、直接用web3j的API
2、java/Android调用合约的 transfer 方法
不管用哪种方式来转账,你都需要先写一个solidity智能合约文件来创建ERC-20 Token,然后部署合约,最后才是通过客户端来调用。
注意:erc-20 token转账和eth转账的区别如下:
1、erc-20 token创建交易对象用的是这个方法 createTransaction
2、erc-20 token需要构建 Function ,它其实对应的就是erc-20 token合约中的那些方法。它的第一个参数就是ERC20中那几个方法的名称,第二个参数的话就是对应合约方法中的参数,第三个参数是和第二个参数对应的,按照我那样就行了。转账的话就是 transfer ,我们从合约的 transfer 可以看到第一个参数是收款地址,第二个参数是金额,所以 Function 这里对应起来就好。
这种方法不需要使用web3j封装的方法,而是直接调用solidity合约的方法。
步骤
1、web3j加载一个已经部署的合约
2、验证合约是否加载成功 isValid
3、如何加载合约成功,则调用合约的 transfer 方法
注意:
1、这里的 TokenERC20 是根据solidity智能合约生成的对应的Java类,用于java/Android和智能合约交互的,如果你对这里不太清楚,不妨看看我之前的一篇文章。
以太坊Web3j命令行生成Java版本的智能合约
2、如果加载合约失败,可能的一个原因是合约对应的Java类中的 BINARY 的值不对,这个值是你部署合约成功之后的bytecode,你最好检查对比一下。
我发送一笔交易,可以通过这个地址查询
https://rinkeby.etherscan.io/tx/
『拾』 理解ERC20代币合约
ERC20代币合约可以说在发币中算是听到非常多的一个名词了,说到发币都会想到这个合约。本文我们就谈谈如何理解ERC20代币合约。
有关ERC20标准可以参考 官方文档 ,可以说比较抽象,使用Solidity描述的ERC20的接口。
ERC-20最初作为一种尝试,旨在为以太坊(Ethereum)上的token合约提供一个特征与接口的共同标准,并且,它现在已经被证明是非常成功的了。ERC-20有很多好处,包括允许钱包显示数以百计不同token的账户余额;创建一个交易工具,只需提供token合约的地址就可以将更多token列入表中。创建ERC-20兼容token的好处很多,以至于在今天,很少有其他token合约用其他方式创建。
目前依旧有“代币(token)合约到底是什么”的争论。本质上来说,一个代币合约就是一个包含了一个对账户地址及其余额的映射的智能合约。账户余额表示一种由合约创建者定义的值:一个代币合约也许使用余额来表示物理对象,或是表示另一种货币价值,还可以表示持有人的名望。余额的单位通常被称为token。
当token从一个账户被转移到另一个账户的时候,代币合约更新两个账户的余额。例如,从 0x2299…3ab7 转移到 0x1f59…3492 10个token将导致余额列表如下图所示进行更新:
如果该token合约允许的话,改变token总体数量有两种方案。token的总数可以通过铸造新token来增加。举个例子,铸造出100个token到地址 0x4ba5…ae22 余额变更如下图所示:
也可以通过“销毁”减少token总量,比如,0x4919…413d 销毁50枚token将导致余额如下方式变化:
销毁token的另一种方式是将token发送到一个未创建私钥的地址,通常来说就是 0地址 。这会使得这些token不可用,在这方面,它与销毁token有同样的效果,但并没有减少token的总数。比如, 0x93f1…1b09 用此种方式销毁了50枚token将导致如下图所示的余额:
简单的代币合约在一个从地址到余额的映射中保存上述信息。当更多复杂的情景出现时,比如分红,替代性结构或者增补性结构往往更强一些。但是,不管操作上的细节的话,对外部可见的token余额总是像上面的图示那样的。
ERC20 合约是通过合约的地址以及可用的token总数来定义的,但通常还提供一些可选项目,也是为用户提供更多细节。比如token的 名字 、 符号 、 小数位 等等。
在深入了解之前,必须明确一点:代币合约没有中心化的登记处,因此无法保证特定名字和符号的唯一性。一旦你创建了一个代币合约,你应该申请将它加入公共站点,如Etherscan,MyEtherWallet 以及 CoinMarketCap。当然,确保符合网站上的说明,可以最大限度提高申请被接受的机会。
代币合约的 名字 是代币的完整名称,比如“My token”。名字长度没有限制,但是太长的话在某些钱包应用中可能显示不完整,所以最好保持名字的简洁。
代币合约的 符号 是代币的符号,比如“MYT”。大体相当于股票行情自动收录机。尽管没有长度限制,但通常都是三四个字符长度。
小数位 这个概念通常容易混淆,通过解释还是很容易理解的。 小数位 代表一个token的可分割程度,小数位可取值从0(完全不可分割)到18(几乎是连续的),甚至还可以更高。技术上讲, 小数位 的数字就是显示在屏幕上小数点后面跟着的数字。存在 小数位 的意义在于以太坊不处理小数,将所有的数字价值都当做整数处理。
总发行量 是ERC20代币合约最后定义的项,而且是唯一一个强制参数。尽管在ERC20标准中没有明确规定,但是定义 总发行量 十分简单: 总发行量 等于所有余额的总和。 总发行量 在上面的例子中已经给出,无须赘述。