Ken

Talk is cheap. Show me the code


  • 首页

  • 标签

  • 分类

  • 归档

  • 关于

  • Sitemap

  • 搜索

通过发币学习以太坊智能合约

发表于 2018-07-30 | 分类于 区块链 |

点进来我就把你当成一个会写代码,玩过 ICO 的人,ICO 通过发币融资的方式分分钟走向人生巅峰,迎娶白富美,那么到底是如何发币,发币难不难,我们只知道炒币,不知道发币,那你怎么敢买的?

一个简单的 token 合约包括:代码部署,转账,上传代码到etherscan并验证,代币管理,代币增发,冻结,销毁,到我们熟知的 ICO。

开发环境,在线IDE

remix

首先来看一下最简单并且可以转账的代币长什么样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
pragma solidity ^0.4.24;

contract SimpleToken {
mapping(address => uint256) public balanceOf;

constructor (uint256 init) public{
balanceOf[msg.sender] = init;
}

function transfer(address _to, uint256 _value) public{
//防溢出
require(balanceOf[msg.sender] >= _value);
require(balanceOf[_to] + _value >= balanceOf[_to]);

balanceOf[msg.sender] -= _value;
balanceOf[_to] += _value;
}
}

那我们去 etherscan 上看一下,正经的代币长什么样子,都包含哪些东西。

以 BNB 为例,有 name,totalSupply,decimals,balanceOf,owner,symbol,freezeOf,allowance。

其中name,totalSupply,decimals,symbol 是ERC20标准代币规范,每个代币都必须要有的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
contract erc20Interface{
string public name;
string public symbol;
uint8 public decimal;
uint public totalSupply;

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

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

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

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

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

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

}
阅读全文 »

微信小程序初探

发表于 2016-12-04 | 分类于 微信小程序 |

最近很是火热的莫过于小程序了,我也来凑凑热闹,体验了一把,关于小程序的定义,网上流传的张小龙朋友圈是这样说的:

小程序是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开应用。也体现了“用完即走”的理念,用户不用关心是否安装太多应用的问题。应用将无处不在,随时可用,但又无需安装卸载

官网必须有

Demo Gif

主要实现了一个记事本的小demo, 可以增加,可以修改,简单记录一下,学习一下而已.
大致目录如下:

其中 .js,.wxml,.wxss,.json分别对应的是我们逻辑,布局,样式,后面那个我们可写可不写,很清晰,相当于我们 Android 上面的 java 代码, xml 布局, style 样式差不多.
一些组件,一些框架官网已经很全了,还给了栗子,直接拿来改改就可以用!
例子中并没有申请开发者,只是简单的注册了开发者,所以拿到了 appId, 可以真机测试,这点比较爽,不能上架而已!上架这些事如果不真心的话,还是看公司发展吧!里面一些申请的过程比较公司化,所以不怎么会搞!!
里面的数据存储由于没有后台支持,只能使用它们自己的 storage,最大支持10M, 应该够了!
后面会把代码放到 github 的!

最后来看看爱范儿的一篇文章吧

阅读全文 »

Activity 和 Fragment 生命周期对比

发表于 2016-06-27 | 分类于 Android |

正好推荐一款画流程图的利器,chrome 插件

gliffy-diagrams

版权声明:



除非注明,本博文章均为原创,转载请以链接形式标明本文地址。

阅读全文 »

AndroidStudio-NDK初探

发表于 2016-06-20 | 分类于 AndroidStudio , NDK |

话说 AndroidStudio从面世以来就一直被质疑能不能用这玩意开发NDK哪,从1.3以后貌似就支持的差不多了,现在都2.2了我才用他来玩NDK, 真是惭愧啊,鼓捣了一下午,看了几篇博客,想到了高中生物课本的一句话,”一猪生九仔,连母十个样啊!!”既然AndroidStudio已经这么人性化了,看了几个决定自己点点看,但是一些地方还是要谢谢那几篇博客啦!

ndk 环境配置搭建

配置ndk 到我们的环境变量中去,和当初我们配置adb是一样的,打开我们的.bash_profile文件(Windows 请自行Google),把我们的 ndk 路径放进去,话说现在AndroidStudio已经很完美的支持ndk了,ndk的下载可以像下载sdk那样下载了,下载完你的目录会多出一个ndk-bundle目录,那就是我们需要关心并把他的路径放到bash_profile文件中去的.使其bash_profile文件生效,并在终端输入ndk-build,如果有信息输出并不是error级别的那就证明 ok 了.

新建 ndk 项目

我们用 AndroidStudio(2.1.2) 新建我们的 ndk 项目,和 Android 项目一样,这里我打算用 ndk写一个求和的 demo,MainActivity就是一个 TextView 显示我们的求和结果,没有说的,然后我们新建一个 Java 类,用来实现native方法

1
2
3
4
5
6
7
public class NDKTest{
public static native int add(int a,int b){
static{
System.loadLibary("NDKDEMO");
}
}
}

这里暂时用到这两个文件,如何才能发挥他们的威力,下面会讲.那么这里面有这么一行System.loadLibrary("NDKDEMO");,那我们就要开始配置我们的 ndk 到项目使其生效,首先打开local.properties这个文件,把 ndk 的路径像 sdk 那样配置进去,然后在gradle.properties这个文件尾加上android.useDeprecatedNdk=true,最后在 app gradle 文件中加上

1
2
3
ndk{
moudleName "NDKDEMO"
}

看出来了吧,上面的System.loadLibrary其实就是这地方的moduleName,同步我们的工程,应该不会报错!

阅读全文 »

App后台开发运维和架构实践Reading Notes 1

发表于 2016-06-18 | 分类于 Android , 后台 |

App后台开发运维和架构实践读书笔记(1)第三章 App 后台核心技术.
可能有人看到这会说为什么会从第三章开始讲,因为前两章讲的 App 后台入门,后台基础技术,也可以去下载试看前三章,既然可以试看前三章,那为什么还写第三章,因为第三章太值得我们去看去写了,虽然还没看完,就想停下来动笔去写写这样忘得才能慢一点.
待续—–

/usr/local/Cellar/python3/3.4.3_1/Frameworks/Python.framework/Versions/3.4

目录1

App后台开发运维和架构实践

目录2

App后台开发运维和架构实践

作者 CSDN
App后台开发运维和架构实践购买地址

版权声明:



除非注明,本博文章均为原创,转载请以链接形式标明本文地址。

阅读全文 »

Gradle多版本差异化管理

发表于 2016-05-25 | 分类于 AndroidStudio |

今天我们来说一说Gradle多版本差异化管理,在实际开发中我们往往经常需要打不同的APK来满足我们不同需求。不用手动改来改去一些多余的需求,用我们AS+Gradle就可以完美解决。废话不多说,开车。

先看图,我们通过切换不同的Build Variant,生成我们需要的APK

下面我们来看看在AS中我们要如何展开这项工作的,在我们app的gradle配置中我们只需要这么做,首先我们要明确两个概念

  1. buildTypes
    可以为不同的用户、不同的渠道打包不同的apk包,以便在程序行为上针对不同使用需求做少量定制(如是否可以更改远程服务器地址等)
  2. productFlavors
    productFlavors主要针对于”不同的版本之间差异非常小,本质上是同一应用”这种情况。可以根据渠道不同在版本名中增加相应后缀,可以根据特殊客户要求打包不同 ApplicationID 的apk包,并可分别使用不同的资源文件(如不同的应用图标等)
1
2
3
4
5
6
7
8
9
10
defaultConfig {
applicationId "android.com.test"
}
productFlavors {
pro {
applicationId "android.com.test.pro"
}
free {
}
}

这里可以看到我们加了productFlavors,里面一个pro版,一个free版,我们为高级版的定了不同的applicationId,而普通版的就是使用我们默认的applicationId,gradle中简单配置就先这样了。
然后我们需要在src目录下面新建我们刚刚加的两个渠道

快速生成我们的java,res目录,新建一个空Activity就好了,然后在里面植入我们需要的代码,下面贴上代码。

阅读全文 »
12…7
Ken

Ken

Android,BlockChain Developer

38 日志
10 分类
34 标签
RSS
GitHub
Links
  • Go Blockchain
© 2016 — 2018 Ken
由 Hexo 强力驱动
|
主题 — NexT.Pisces v5.1.4