壹维克斯One Wiex系统合约开发质押案例
智能合约不可更改的优势让它很自然地适用于合约条款的场景,它可以有效地减少恶意篡改,减少人工干预。比如可以在以太坊上写一个类似银行的智能合约,然后人们就可以通过这个合约来存钱、取钱。这样就不会出现因为银行工作人员因失误或恶意更改导致余额不对等情况的出现。
事实上,这个“银行”智能合约里存的钱不一定是大饼(ETH),因为以太坊智能合约它还允许合约开发人员定义自己的货币,就是我们所知道的各种基于以太坊的Token,比如USDT,NBN等。
这么一讲,仿佛智能合约给各行各业的人们提供了一个新的思路,大家都在想着是不是可以基于智能合约开发一些新的项目,发行自己的Token呢?智能合约当然可以,但是必须按照规定程序进行。那么为了有效地防止平台上出现各种杂七杂八的Token、数据等,它有着自己的一套标准。
ERC标准
ERC全称是“Ethereum Request for Comment”,壹维克斯质押13z系统4277开发z558,表示以太坊版的意见征求稿,ERC中包含技术和组织等注意事项及标准。这套标准其实不光由以太坊官方提出,还由一些以太坊爱好者提出。
以前面谈到的银行智能合约为例,我们不难想到它会具备以下几个功能和须知:
1.需要有记录每一个客户的余额;
2.需要具备转钱的功能,即包含存钱与取钱;
3.要保证每个客户能够查询自己的余额。
以上这些功能和须知仔细一思考,好像是每个“银行”合约都需要具备的,也是Token合约所需要具备的,因此为了更好地兼容钱包,兼容交易平台,以太坊发行了像ERC20,ERC721这样的Token协议标准。
比如阿猫币、阿狗币都是基于ERC20标准发行的,那么它们都会提供给用户一些选择按钮(即接口函数一致),这些选择按钮供用户查询余额,转移Token等,但是阿猫币、阿狗币底层实现查询余额和转移Token的等功能的方式可以不同。
除了Token合约需要规范一样,其他的一些包括但不限于数据包的设计、一些接口的定义规则等也有一些ERC标准。这些标准协议一些来自于以太坊创团队,一些来自于以太坊的爱好者、贡献者的提议。总的来说,都是为了共同创建一个更好的以太坊环境。
编写智能合约是创建动态NFT的关键步骤。你需要使用Solidity或其他支持NFT创建的程式语言(eg Rust、Vyper和Move)来创建智能合约,这个合约会结合metadata来定义NFT的属性、图像。在创建动态NFT时,你需要确定动态元素的变化方式和变化频率,以及它们发布后如何与智能合约互动。
//Vanilla JS
//PLAY IN FULL PAGE VIEW!
window.addEventListener("DOMContentLoaded",game);
//General sprite load
var sprite=new Image();
var spriteExplosion=new Image();
sprite.src='img/sprite.png';
window.onload=function(){
spriteExplosion.src='img/explosion.png';
};
//Game
function game(){
//Canvas
var canvas=document.getElementById('canvas'),
ctx=canvas.getContext('2d'),
cH=ctx.canvas.height=window.innerHeight,
cW=ctx.canvas.width=window.innerWidth;
//Game
var bullets=[],
asteroids=[],
explosions=[],
destroyed=0,
record=0,
count=0,
playing=false,
gameOver=false,
_planet={deg:0};
//Player
var player={
posX:-35,
posY:-(100+82),
width:70,
height:79,
deg:0
};
canvas.addEventListener('click',action);
canvas.addEventListener('mousemove',action);
window.addEventListener("resize",update);
function update(){
cH=ctx.canvas.height=window.innerHeight;
cW=ctx.canvas.width=window.innerWidth;
}
function move(e){
player.deg=Math.atan2(e.offsetX-(cW/2),-(e.offsetY-(cH/2)));
}
function action(e){
e.preventDefault();
if(playing){
var bullet={
x:-8,
y:-179,
sizeX:2,
sizeY:10,
realX:e.offsetX,
realY:e.offsetY,
dirX:e.offsetX,
dirY:e.offsetY,
deg:Math.atan2(e.offsetX-(cW/2),-(e.offsetY-(cH/2))),
destroyed:false
};
bullets.push(bullet);
}else{
var dist;
if(gameOver){
dist=Math.sqrt(((e.offsetX-cW/2)*(e.offsetX-cW/2))+((e.offsetY-(cH/2+45+22))*(e.offsetY-(cH/2+45+22))));
if(dist<27){
if(e.type=='click'){
gameOver=false;
count=0;
bullets=[];
asteroids=[];
explosions=[];
destroyed=0;
player.deg=0;
canvas.removeEventListener('contextmenu',action);
canvas.removeEventListener('mousemove',move);
canvas.style.cursor="default";
}else{
canvas.style.cursor="pointer";
}
}else{
canvas.style.cursor="default";
}
}else{
dist=Math.sqrt(((e.offsetX-cW/2)*(e.offsetX-cW/2))+((e.offsetY-cH/2)*(e.offsetY-cH/2)));
if(dist<27){
if(e.type=='click'){
playing=true;
canvas.removeEventListener("mousemove",action);
canvas.addEventListener('contextmenu',action);
canvas.addEventListener('mousemove',move);
canvas.setAttribute("class","playing");
canvas.style.cursor="default";
}else{
canvas.style.cursor="pointer";
}
}else{
canvas.style.cursor="default";
}
}
}
}
共有 0 条评论