file-type

基于ERC721的有限访问社区:交易与治理

ZIP文件

下载需积分: 9 | 260KB | 更新于2025-09-06 | 117 浏览量 | 0 下载量 举报 收藏
download 立即下载
在给定文件信息中,我们可以提炼出关于区块链技术和智能合约编程的知识点。本节内容将围绕以太坊ERC721标准、NFT(非同质化代币)、智能合约、区块链治理、以及Solidity编程语言进行详细阐述。 **ERC721标准与NFT** ERC721是以太坊区块链上的一个代币标准,用于创建唯一的、不可分割的数字资产。这些资产被称作非同质化代币(NFT),与同质化代币(如ERC20代币)相对,后者可以相互替代。ERC721代币的每一枚都具有独特的ID,它们不能被分割为更小的部分,每个代币都是独一无二的。 在文件描述的“门控社区”场景中,ERC721兼容的访问令牌被用来构建一个基于令牌所有权的有限成员资格社区。令牌允许对物理或虚拟内容的访问,并且可以在二级市场上转让。这种机制可以应用于各种情况,如独家餐厅预订权限、职位发布网站访问等。 **区块链治理与社区管理** 区块链治理指的是通过去中心化的规则和协议来指导网络的管理和发展。在“门控社区”模型中,令牌持有者可以共同参与社区的决策过程。例如,每个令牌持有者有1票权,他们可以集体决定将坏演员的令牌“烧毁”(永久销毁),并且该令牌会被加回初始池供他人获取。这样的治理机制允许社区保持其会员的品质,并对不端行为做出快速反应。 **智能合约与Solidity编程** 智能合约是运行在区块链上的一段代码,它可以在满足特定条件时自动执行合约条款。在“门控社区”的案例中,智能合约将管理访问令牌的发行、交易、转移、授权和治理逻辑。 Solidity是编写以太坊智能合约的编程语言,它是一种静态类型语言,特别设计用于实现智能合约。它的语法接近JavaScript,但增加了面向对象编程、继承等特性。文件中提及的“gated_community-main”是包含项目主要代码的压缩包,可见本项目的主要开发和执行环境应该是基于Solidity的。 **智能合约的授权流程** 文件描述了一个用户访问网站并用钱包签名消息(如使用MetaMask)的授权流程。MetaMask是一个流行的以太坊钱包,可以允许用户与智能合约互动。通过钱包签名消息,用户能够与智能合约进行安全的交互,而不需要共享敏感信息。服务器将从签名消息中恢复出用户的身份信息,并允许执行授权后的操作,如访问某个受限区域或功能。 **总结** 上述内容中,我们深入了解了区块链技术在实现有限成员资格社区方面的应用,探讨了ERC721标准和NFT的概念,以及它们如何被用于管理和控制对内容或服务的访问。我们还研究了区块链治理的概念,以及智能合约和Solidity编程语言在构建去中心化社区中的关键作用。最后,我们了解了一个典型的用户与智能合约交互的授权流程。这些知识点共同构成了一套较为全面的了解区块链社区管理、智能合约编写与执行以及去中心化应用开发的知识体系。

相关推荐

filetype

// Synchroniser for nHCLKEnDbg // (Use active low version so that at reset HCLKEnSync is high) cm4_sync #(1) u_cm4_sync_hclken (//Inputs .clk (FCLK), .reset_n (int_poreset_n), .d_async_i (c_sys_power_up), //Outputs .q_o (c_sys_power_up_sync) ); // Synchroniser for DAPPWRUP cm4_sync #(1) u_cm4_sync_dappwrup (//Inputs .clk (dap_clk_src), .reset_n (dap_reset_n), .d_async_i (CDBGPWRUPACK), //Outputs .q_o (c_dbg_power_up_ack_sync) ); // Synchroniser for DBGEN cm4_sync #(1) u_cm4_sync_dbgen (//Inputs .clk (dap_clk_src), .reset_n (dap_reset_n), .d_async_i (DBGEN), //Outputs .q_o (dbg_en_sync) ); assign dap_en = c_dbg_power_up_ack_sync & dbg_en_sync; // Generate gated DAP clock cm4_clk_gate #(CLKGATE_PRESENT) u_cm4_clk_gate_dapclk (// Inputs .clk (dap_clk_src), .clk_enable_i (dap_clk_en), .global_disable_i (CGBYPASS), // Outputs .clk_gated_o (int_dap_clk) ); // Ensure TPIU is enabled if either trace source can // be active. If HCLK is stopped, must also stop trace capture assign tpiu_en = (trc_ena | etm_en) & ~int_gate_hclk; // Generate gated debug clock cm4_clk_gate #(CLKGATE_PRESENT) u_cm4_clk_gate_dclk (// Inputs .clk (FCLK), .clk_enable_i (tpiu_en), .global_disable_i (CGBYPASS), // Outputs .clk_gated_o (int_dclk_g) ); // Generate gated core clock cm4_clk_gate #(CLKGATE_PRESENT) u_cm4_clk_gate_cclk (// Inputs .clk (FCLK), .clk_enable_i (ISOLATEn), .global_disable_i (CGBYPASS), // Outputs .clk_gated_o (int_cclk) ); // Generate gated TRACECLKIN clock cm4_clk_gate #(CLKGATE_PRESENT) u_cm4_clk_gate_traceclkin (// Inputs .clk (TRACECLKIN), .clk_enable_i (ISOLATEn), .global_disable_i (CGBYPASS), // Outputs .clk_gated_o (int_trace_clk_in) ); // Clock gate removal logic assign dap_clk = (CLKGATE_PRESENT != 0) ? int_dap_clk : dap_clk_src; assign dclk_g = (CLKGATE_PRESENT != 0) ? int_dclk_g : HCLK; assign cclk = ((CLKGATE_PRESENT != 0) & (WIC_PRESENT != 0)) ? int_cclk : FCLK; assign trace_clk_in_g = ((CLKGATE_PRESENT != 0) & (WIC_PRESENT != 0)) ? int_trace_clk_in : TRACECLKIN; 解释代码

filetype

解释下面这段代码: for i, edge_index in enumerate(edge_index_sets): edge_num = edge_index.shape[1] cache_edge_index = self.cache_edge_index_sets[i] if cache_edge_index is None or cache_edge_index.shape[1] != edge_num*batch_num: self.cache_edge_index_sets[i] = get_batch_edge_index(edge_index, batch_num, node_num).to(device) batch_edge_index = self.cache_edge_index_sets[i] all_embeddings = self.embedding(torch.arange(node_num).to(device)) weights_arr = all_embeddings.detach().clone() all_embeddings = all_embeddings.repeat(batch_num, 1) weights = weights_arr.view(node_num, -1) cos_ji_mat = torch.matmul(weights, weights.T) normed_mat = torch.matmul(weights.norm(dim=-1).view(-1,1), weights.norm(dim=-1).view(1,-1)) cos_ji_mat = cos_ji_mat / normed_mat dim = weights.shape[-1] topk_num = self.topk topk_indices_ji = torch.topk(cos_ji_mat, topk_num, dim=-1)[1] self.learned_graph = topk_indices_ji gated_i = torch.arange(0, node_num).T.unsqueeze(1).repeat(1, topk_num).flatten().to(device).unsqueeze(0) gated_j = topk_indices_ji.flatten().unsqueeze(0) gated_edge_index = torch.cat((gated_j, gated_i), dim=0) batch_gated_edge_index = get_batch_edge_index(gated_edge_index, batch_num, node_num).to(device) gcn_out = self.gnn_layers[i](x, batch_gated_edge_index, node_num=node_num*batch_num, embedding=all_embeddings) gcn_outs.append(gcn_out) x = torch.cat(gcn_outs, dim=1) x = x.view(batch_num, node_num, -1) indexes = torch.arange(0,node_num).to(device) out = torch.mul(x, self.embedding(indexes)) out = out.permute(0,2,1) out = F.relu(self.bn_outlayer_in(out)) out = out.permute(0,2,1) out = self.dp(out) out = self.out_layer(out) out = out.view(-1, node_num) return out

filetype

正常log [ 116.487588] (0)[455:[email protected]][HIF-SDIO][W]wmt_fb_notifier_callback:@@@@@@@@@@wmt enter early POWERDOWN @@@@@@@@@@@@@@ [ 116.487606] (0)[455:[email protected]][wlan][455]wlan_fb_notifier_callback:(SW4 INFO) wlan_fb_notifier_callback: event[9], blank[4] [ 116.487611] (0)[455:[email protected]][wlan][455]kalSetPerMonDisable:(SW4 INFO) enter kalSetPerMonDisable [ 116.487623] (0)[455:[email protected]][wlan][455]wlan_fb_notifier_callback:(SW4 INFO) wlan_fb_notifier_callback: end [ 116.487631] (1)[1208:main_thread][wlan][1208]kalPerMonDisable:(SW4 INFO) enter kalPerMonDisable [ 116.487748] (1)[1208:main_thread][wlan][1208]kalPerMonUpdate:(SW4 INFO) <2973ms> Tput: 0(0.000mbps) [0:0:0:0][0:0:0:0][0:0:0:0][0:0:0:0] Pending:0/256 [0:0:0:0][0:0:0:0][0:0:0:0][0:0:0:0] Used:0/768/256 [0][0][0][0][0] LQ[0:0:0] lv:0 th:3 fg:0x7 Mo:[0:0:0:0] TxDp[ST:BS:FO:QM:DP]:0:0:0:0:0 [ 116.487762] (1)[1208:main_thread][wlan][1208]kalPerMonUpdate:(SW4 INFO) ndevdrp:[0:0:0:0][0:0:0:0][0:0:0:0] drv[RM,IL,RI,RT,RM,RW,RA,RB,DT,NS,IB,HS,LS,DD,ME,BD,NI,DR,TE,CE,DN,FE,DE,IE,TME]:9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 [ 116.487867] (0)[203:kworker/0:2][STP-PSM] [I]_stp_psm_do_wait: STP is waiting state for ACT, i=1, state = 2 [ 116.511882] -(1)[1024:system_server]alarmtimer_enqueue, 574145000000 [ 116.523904] (0)[203:kworker/0:2][STP-PSM] [I]_stp_psm_do_wait: +Total waits for ACT takes 36025 usec [ 116.525750] (0)[203:kworker/0:2][HIF-SDIO][I]mtk_wcn_wmt_func_ctrl:wmt-exp: OPID(4) type(9) start [ 116.525801] (1)[580:mtk_wmtd][WMT-CORE][I]wmt_core_dump_func_state:[AF FUNC OFF]status(b:0 f:0 g:0 gl5:0 w:2 lpbk:0 coredump:0 wmt:2 ant:0 sd1:0 sd2:0 stp:0) [ 116.526065] (0)[203:kworker/0:2][HIF-SDIO][I]mtk_wcn_wmt_func_ctrl:OPID(4) type(9) ok [ 116.565175] (1)[573:mtk_stp_psm]MTK-BTIF-EXP[I]mtk_wcn_btif_dpidle_ctrl:enter deep idle [ 116.617529] (0)[335:logd.auditd]type=1400 audit(1672660091.950:271): avc: denied { read } for comm="binder:377_4" name="wakeup113" dev="sysfs" ino=38281 scontext=u:r:system_suspend:s0 tcontext=u:object_r:sysfs_batteryinfo:s0 tclass=dir permissive=0 [ 116.644258] -(0)[456:[email protected]]mt635x_auxadc_read_raw: 5 callbacks suppressed [ 116.644269] (0)[456:[email protected]]mt635x-auxadc mt635x-auxadc: name:BATADC, channel=0, adc_out=0x5f4c, adc_result=4020 [ 116.648067] (0)[456:[email protected]]mt635x-auxadc mt635x-auxadc: name:BAT_TEMP, channel=3, adc_out=0xa9b, adc_result=1193 [ 116.648746] (0)[456:[email protected]]mt635x-auxadc mt635x-auxadc: name:VBIF, channel=11, adc_out=0xfff, adc_result=1799 [ 116.650187] (1)[456:[email protected]]mt635x-auxadc mt635x-auxadc: name:BAT_TEMP, channel=3, adc_out=0xa9c, adc_result=1193 [ 116.650871] (0)[456:[email protected]]mt635x-auxadc mt635x-auxadc: name:VBIF, channel=11, adc_out=0xfff, adc_result=1799 异常log [ 119.152791] (0)[455:[email protected]][HIF-SDIO][W]wmt_fb_notifier_callback:@@@@@@@@@@wmt enter early POWERDOWN @@@@@@@@@@@@@@ [ 119.152823] (0)[455:[email protected]][wlan][455]wlan_fb_notifier_callback:(SW4 INFO) wlan_fb_notifier_callback: event[9], blank[4] [ 119.152833] (0)[455:[email protected]][wlan][455]kalSetPerMonDisable:(SW4 INFO) enter kalSetPerMonDisable [ 119.152861] (0)[455:[email protected]][wlan][455]wlan_fb_notifier_callback:(SW4 INFO) wlan_fb_notifier_callback: end [ 119.152876] (1)[1208:main_thread][wlan][1208]kalPerMonDisable:(SW4 INFO) enter kalPerMonDisable [ 119.153177] (1)[1208:main_thread][wlan][1208]kalPerMonUpdate:(SW4 INFO) <2665ms> Tput: 0(0.000mbps) [0:0:0:0][0:0:0:0][0:0:0:0][0:0:0:0] Pending:0/256 [0:0:0:0][0:0:0:0][0:0:0:0][0:0:0:0] Used:0/768/256 [0][0][0][0][0] LQ[0:0:0] lv:0 th:3 fg:0x7 Mo:[0:0:0:0] TxDp[ST:BS:FO:QM:DP]:0:0:0:0:0 [ 119.153206] (1)[1208:main_thread][wlan][1208]kalPerMonUpdate:(SW4 INFO) ndevdrp:[0:0:0:0][0:0:0:0][0:0:0:0] drv[RM,IL,RI,RT,RM,RW,RA,RB,DT,NS,IB,HS,LS,DD,ME,BD,NI,DR,TE,CE,DN,FE,DE,IE,TME]:9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 [ 119.153243] (0)[1100:kworker/0:3][STP-PSM] [I]_stp_psm_do_wait: STP is waiting state for ACT, i=1, state = 2 [ 119.178491] -(1)[1024:system_server]alarmtimer_enqueue, 574145000000 [ 119.184024] (0)[1100:kworker/0:3][STP-PSM] [I]_stp_psm_do_wait: +Total waits for ACT takes 30771 usec [ 119.185607] (0)[1100:kworker/0:3][HIF-SDIO][I]mtk_wcn_wmt_func_ctrl:wmt-exp: OPID(4) type(9) start [ 119.185856] (3)[580:mtk_wmtd][WMT-CORE][I]wmt_core_dump_func_state:[AF FUNC OFF]status(b:0 f:0 g:0 gl5:0 w:2 lpbk:0 coredump:0 wmt:2 ant:0 sd1:0 sd2:0 stp:0) [ 119.185956] (0)[1100:kworker/0:3][HIF-SDIO][I]mtk_wcn_wmt_func_ctrl:OPID(4) type(9) ok [ 119.225289] (0)[573:mtk_stp_psm]MTK-BTIF-EXP[I]mtk_wcn_btif_dpidle_ctrl:enter deep idle [ 119.369243] (0)[293:init]init 3: [119365][75]ReapLogT PropSet [sys.btn.screen.state]=[off]119164 [sys.bw.rup.icon.state]=[1000]119289 Done [ 119.386756] (1)[2301:binder:377_5]active wakeup source: ttyC0 [ 119.386873] (1)[2301:binder:377_5]active wakeup source: ttyC0 [ 119.714253] (1)[2301:binder:377_5]PM: suspend entry (deep) 导致 [ 90.462570] (0)[291:irq/145-tlsc6x_]i2c i2c-0: err, access at suspend no irq stage [ 90.462590] (0)[291:irq/145-tlsc6x_][tlsc][error] [IIC]: i2c_transfer(2) error, addr= 0xd3!! [ 90.462597] (0)[291:irq/145-tlsc6x_][tlsc][error] [IIC]: i2c_transfer(2) error, ret=-16, rlen=2, wlen=1!! 的原因,和解决方法

陳二二
  • 粉丝: 45
上传资源 快速赚钱