互助排單MMMBSC智慧合約系統開發部署技術

搭建猿punk2558發表於2023-03-31

智慧合約不可更改的優勢讓它很自然地適用於合約條款的場景,它可以有效地減少惡意篡改,減少人工幹預。比如可以在以太坊上寫一個類似銀行的智慧合約,然後人們就可以透過這個合約來存錢、取錢。這樣就不會出現因為銀行工作人員因失誤或惡意更改導致餘額不對等情況的出現。

事實上,這個“銀行”智慧合約裡存的錢不一定是大餅(ETH),MMMBSC互助智慧合約系統13z開4z77發z558,因為以太坊智慧合約它還允許合約開發人員定義自己的貨幣,就是我們所知道的各種基於以太坊的Token,比如USDT,NBN等。

ERC全稱是“Ethereum Request for Comment”,表示以太坊版的意見徵求稿,ERC中包含技術和組織等注意事項及標準。這套標準其實不光由以太坊官方提出,還由一些以太坊愛好者提出。

以前面談到的銀行智慧合約為例,我們不難想到它會具備以下幾個功能和須知:

1.需要有記錄每一個客戶的餘額;

2.需要具備轉錢的功能,即包含存錢與取錢;

3.要保證每個客戶能夠查詢自己的餘額。

以上這些功能和須知仔細一思考,好像是每個“銀行”合約都需要具備的,也是Token合約所需要具備的,因此為了更好地相容錢包,相容交易所,以太坊發行了像ERC20,ERC721這樣的代幣協議標準。

比如阿貓幣、阿狗幣都是基於ERC20標準發行的,那麼它們都會提供給使用者一些選擇按鈕(即介面函式一致),這些選擇按鈕供使用者查詢餘額,轉移代幣等,但是阿貓幣、阿狗幣底層實現查詢餘額和轉移代幣的等功能的方式可以不同。

除了Token合約需要規範一樣,其他的一些包括但不限於資料包的設計、一些介面的定義規則等也有一些ERC標準。這些標準協議一些來自於以太坊創團隊,一些來自於以太坊的愛好者、貢獻者的提議。總的來說,都是為了共同建立一個更好的以太坊環境。

//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.{

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";

}

}

}

}

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70020115/viewspace-2943182/,如需轉載,請註明出處,否則將追究法律責任。

相關文章