首页
学习
活动
专区
工具
TVP
发布

爱之初体验-520区块链详细教程

今天就是5.20了,值此约会佳节,特奉上教你把表白信息写入到以太坊的转账data,并广播出去的教程一篇。

当然,还有发币教程。你可以创建总量为5201314.名称为“xxx我爱你”的erc20的代币。

不知道习惯了X所X模的你,是否还相信这些简单的爱情,以及用心的经营,相信可以依靠自己小小的努力去收获一份简单而又不昂贵,真诚而有不浮夸的爱情。

好了,不啰嗦,以下是详细教程,快点动手为自己心爱的人送上一份“区块链爱情”大礼吧。

1:关于将表白信息写入到以太坊转账的data(附加信息)里。并将该data连带转账通过矿工广播出去。

那么具体来说操作步骤:

1)首先你要把你所需要写的内容转码。比如“皮皮虾,我爱你”这段话从文字转换成代码“e79aaee79aaee899be20e68891e788b1e4bda0”

转码网站:https://www.bejson.com/convert/ox2str

2)其次切记转码后由于进制问题,需要在你的转码内容前面加入“0x”即“

0x e79aaee79aaee899be20e68891e788b1e4bda0”。这个时候我们打开imtoken或者myetherwallet点转账,输入地址和数量后。点“高级选项”,将我们前面弄好的代码复制进入“十六进制数据”栏中。

IM手机钱包下载地址:https://token.im/

MYETHERWALLET网页钱包:https://www.myetherwallet.com/

3)第三步,我们在转账交易发出后就可以点开“交易记录”,然后点下方的“交易号”。点击哈希记录,这个时候我们就可以打开区块浏览器看到我们原先的转账信息。即:付款人地址,收款人地址,以及我们最重要的广播出去的“爱情宣言”。

4)最后我们在交易查询的区块浏览器里点击“switch back”,这个时候就可以将我们原先用汉语写的信息。从代码再次变换成文字。打工告成。

什么?你觉得还不够?,那么要不我们直接来发给币送给你的另一半。来来来,接下来教你如何用以太坊的智能合约,一键发布属于你的专属代币token。

一. 前期准备:

1.在电脑上操作,需要科学上网

2.安装谷歌浏览器(百度搜索下载)

3.在谷歌浏览器上安装metamask的插件。

(如何在谷歌浏览器上安装metamask的插件?如果已经安装了metamask插件,可以跳过第一步直接看第二步。)

a:点击以下网址进行安装, 点击添加至chrome。

https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn

b:点击添加扩展程序。

c:点击chrome浏览器右上角metamask图标,同意隐私条款和使用条款

d:输入并确认密码,创建账号

e:将12个助记词抄下来,保存好。

可以向你的地址转0.1 eth,用于发行代币。

二. 部署合约

1.首先打开 https://remix.ethereum.org/

2.在remix上点击左上角的+号,新创建文件,文件名把Untitled改为TheToken,并把合约代码复制粘贴到里面(合约代码在文末)

3.类似第2步,创建一个名为EIP20Interface的文件,把接口代码复制粘贴进去(接口代码在文末)

4.点击右边的Compile的Start to compile,刷新一下

5.点击右边的Run,Environment选择Injected Web3,Account选择自己的钱包地址,下面选择 “TheToken”。

输入:初始发行量,”TheToken”,0,”币符号”

(这就表示你想发行一个叫JOIE的币,总量1亿)

最后注意:

分号和逗号都是英文输入法的,不要弄成中文输入法,注意不要有空格,严格按照格式来

另外币的代号是支持中文的哦,比如可以把JOIE改成“皮皮虾”,发行皮皮虾币,酷不酷,惊喜不惊喜!

6.点击Create,会弹出一个有乱码的大框,不要管他,直接点击右下角Confirm

耐心等待,就会弹出MetaMask的支付框,点击SUBMIT

7.这个时候下面会出现 1 pending transactions,说明一个任务在进行中,继续耐心等待,直到下面智能合约创建成功,此时变成 0 pending transactions了。

8.balanceOf 输入格式:”钱包地址”

比如我的钱包地址是0x1A2281352c6d903Dd17Acccc352d2aF181Ee9bC5,就输入”0x1A2281352c6d903Dd17Acccc352d2aF181Ee9bC5”(注意分号是英文输入法的)

Transfer 输入格式: “钱包地址”,代币总量

比如我的Joie币一亿个,那么输入

9.点击transfer会弹出个框,点击Confirm,再弹出MetaMask框,点SUBMIT

最后大功告成!赶紧打开自己的钱包看看自己发行的币到账了吗?

最后,关注高校区块链俱乐部

一个聚集年轻人的公众号

扫码进群

合约代码

/*

Implements EIP20 token standard: https://github.com/ethereum/EIPs/issues/20

.*/

pragma solidity ^0.4.18;

import "./EIP20Interface.sol";

contract TheToken is EIP20Interface {

uint256 constant private MAX_UINT256 = 2**256 - 1;

mapping (address => uint256) public balances;

mapping (address => mapping (address => uint256)) public allowed;

/*

NOTE:

The following variables are OPTIONAL vanities. One does not have to include them.

They allow one to customise the token contract & in no way influences the core functionality.

Some wallets/interfaces might not even bother to look at this information.

*/

string public name; //fancy name: eg Simon Bucks

uint8 public decimals; //How many decimals to show.

string public symbol; //An identifier: eg SBX

function TheToken(

uint256 _initialAmount,

string _tokenName,

uint8 _decimalUnits,

string _tokenSymbol

) public {

balances[msg.sender] = _initialAmount; // Give the creator all initial tokens

totalSupply = _initialAmount; // Update total supply

name = _tokenName; // Set the name for display purposes

decimals = _decimalUnits; // Amount of decimals for display purposes

symbol = _tokenSymbol; // Set the symbol for display purposes

}

function transfer(address _to, uint256 _value) public returns (bool success) {

require(balances[msg.sender] >= _value);

balances[msg.sender] -= _value;

balances[_to] += _value;

Transfer(msg.sender, _to, _value);

return true;

}

function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {

uint256 allowance = allowed[_from][msg.sender];

require(balances[_from] >= _value && allowance >= _value);

balances[_to] += _value;

balances[_from] -= _value;

if (allowance

allowed[_from][msg.sender] -= _value;

}

Transfer(_from, _to, _value);

return true;

}

function balanceOf(address _owner) public view returns (uint256 balance) {

return balances[_owner];

}

function approve(address _spender, uint256 _value) public returns (bool success) {

allowed[msg.sender][_spender] = _value;

Approval(msg.sender, _spender, _value);

return true;

}

function allowance(address _owner, address _spender) public view returns (uint256 remaining) {

return allowed[_owner][_spender];

}

}

接口代码

// Abstract contract for the full ERC 20 Token standard

// https://github.com/ethereum/EIPs/issues/20

pragma solidity ^0.4.18;

contract EIP20Interface {

/* This is a slight change to the ERC20 base standard.

function totalSupply() constant returns (uint256 supply);

is replaced with:

uint256 public totalSupply;

This automatically creates a getter function for the totalSupply.

This is moved to the base contract since public getter functions are not

currently recognised as an implementation of the matching abstract

function by the compiler.

*/

/// total amount of tokens

uint256 public totalSupply;

/// @param _owner The address from which the balance will be retrieved

/// @return The balance

function balanceOf(address _owner) public view returns (uint256 balance);

/// @notice send `_value` token to `_to` from `msg.sender`

/// @param _to The address of the recipient

/// @param _value The amount of token to be transferred

/// @return Whether the transfer was successful or not

function transfer(address _to, uint256 _value) public returns (bool success);

/// @notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from`

/// @param _from The address of the sender

/// @param _to The address of the recipient

/// @param _value The amount of token to be transferred

/// @return Whether the transfer was successful or not

function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);

/// @notice `msg.sender` approves `_spender` to spend `_value` tokens

/// @param _spender The address of the account able to transfer the tokens

/// @param _value The amount of tokens to be approved for transfer

/// @return Whether the approval was successful or not

function approve(address _spender, uint256 _value) public returns (bool success);

/// @param _owner The address of the account owning tokens

/// @param _spender The address of the account able to transfer the tokens

/// @return Amount of remaining tokens allowed to spent

function allowance(address _owner, address _spender) public view returns (uint256 remaining);

// solhint-disable-next-line no-simple-event-func-name

event Transfer(address indexed _from, address indexed _to, uint256 _value);

event Approval(address indexed _owner, address indexed _spender, uint256 _value);

}

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180520G0JGJ000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券