sol

Solidity合约安全漏洞分析教程【Mythril】

Deadly 提交于 2020-08-11 00:29:50
在这个教程中,我们将学习Mythril的安装与使用方法,了解Mythril的工作原理,掌握如何利用Ether Thief和Suicide模块分析合约的安全漏洞,以及如何配置Mythril安全分析的交易数量参数和执行超时参数。 用自己熟悉的语言学习以太坊DApp开发: Java | Php | Python | .Net / C# | Golang | Node.JS | Flutter / Dart 1、安装Mythril安全分析工具 执行如下命令安装Mythril: $ pip install mythril 使用如下命令检查安装是否成功,确保版本不低于0.21.7: $ myth version Mythril version v0.21.15 Mythril最基本的安全分析命令是 myth analyze ,例如: $ myth analyze <Solidity file> $ myth analyze -a <contract address> 没有其他参数的话,myth analyze命令将执行适合大多数情况的通用分析。 2、Mythril工作原理 Mythril通过在一个特制的以太坊虚拟机里运行智能合约字节码来检查合约的安全问题,它使用 符号执行 技术来检查程序可能的状态,分析过程包含以下步骤: 1、获取合约字节码 2、初始化合约账户的状态 3

计算机组成原理 — IPMI/BMC

社会主义新天地 提交于 2020-08-08 14:32:45
目录 文章目录 目录 平台管理(Platform Management) BMC IPMI ipmitool 平台管理(Platform Management) 平台管理表示的是一系列的监视和控制功能,操作的对象是系统硬件。比如:通过监视系统的温度,电压,风扇、电源等等,并做相应的调节工作,以保证系统处于健康的状态。如果系统真的不正常了,也可以通过复位的方式来重新启动系统。同时平台管理还负责记录各种硬件的信息和日志记录,用于提示用户和后续问题的定位。 以上的这些功能可以集成到一个控制器上来实现,这个控制器被称为 BMC(Baseboard Manager Controller,基板管理控制器)。 BMC BMC 通常是一个安装在服务器主板上的独立板卡,其不依赖于服务器的处理器、BIOS 或操作系统来工作,可谓非常地独立,是一个单独在系统内运行的无代理管理子系统。通俗来讲,BMC 是整个服务器单板的大管家。 BMC 与主板上的不同传感器通信来监视系统是否有严重事件,并在某些参数超出其预置阈值时发出警报和日志事件。所有的 IPMI 功能都是向 BMC 发送命令(IPMI 规范中规定的指令)来完成的,BMC 接收并在系统事件日志中记录事件消息,维护描述系统中传感器情况的传感器数据记录。 BMC 具有以下功能 : 通过系统的串行端口进行访问 故障日志记录和 SNMP 警报发送

音程软件演示

瘦欲@ 提交于 2020-08-08 08:30:12
音程指两个音级在音高上的相互关系,就是指两个音在音高上的距离而言,其单位名称叫做度。 在音程中两音同时演奏的叫作和声音程,两音先后演奏的叫作旋律音程。 例如以下是旋律音程: 以下是和声音程: “度”是音程的基本衡量单位。在基础乐理中,人们把自然音阶Do、Re、Mi、Fa、Sol、La、Si的每个音都称为一度,以此为前提,两个音之间包含几个音,便称其音程为几度。 1 5 音程是5度音程,效果可以下载软件试听。 何问起音乐下载 https://hovertree.com/h/bjag/mcmub5gm.htm 来源: oschina 链接: https://my.oschina.net/u/4313784/blog/4437780

Mysql 架构及执行流程

☆樱花仙子☆ 提交于 2020-08-06 08:53:28
1. mysql 架构 1.1 简化版架构 客户端+ 核心服务 + 存储引擎 ⬇︎ ⬆︎(客户端)⬇︎⬆︎ =====【连接/线程处理】====} ⬇︎ ⬇︎ 【查询缓存】 ⬅︎ 【解析器】 } 【核心服务】 ⬇︎ ========【优化器】=======} ⬇︎⬆︎ =======【存储引擎】======= 1.2 详细版架构 MySql 逻辑架构图 | -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | | 客户端 | | 「 Connectors : PHP 、 JDBC 、 Python 、navicat」 | | -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ⬇︎ ⬆︎ | === === === === Mysql 服务端 === === === === === === === === === === === === === === === === === === === === === == | | -- -- -- -- -- -- -- -- -- -- -- -- -- -- - | | Connection Pool | | -- -- -- -- -- -- -- -- -- -- --

老白学编程-关于IPMI

大兔子大兔子 提交于 2020-08-06 04:26:27
IPMI 的种种记忆 谈到硬件的监控,IPMI的知识必不可少,来复习一下智能平台管理接口(Intelligent Platform Management Interface)相关的知识点。 IPMI可以用来监测传感器,监控系统时间,电源控制和serial-over-LAN(SOL)。 标准 IPMI specification v1.5/2.0 一张图 IPMI规定了很多的东西,BMC是其中最重要的一个部分,此外还有一些”卫星“控制器通过IPMB与BMC相连,这些”卫星“控制器一般控制特定的设备。 IPMB全称Intelligent Platform Management Bus,是一种基于I2C的串行总线,它用于BMC与”卫星“控制器的通信,其上传递的是IPMI命令。 Mother Board, 在服务器中,这一部分是主角,它包含了CPU,PCH等主要的部件。这里我们可以看到它连接除了数个组件:网卡,串口和IPMI总线,其实还有一个部分在图中最上面中间的PCI总线。 Non-volatile Storage,我们知道BMC其实是一个独立的芯片,那么它肯定也需要运行系统。通过BMC里面运行的是一个类Unix系统,而该系统就存放再Non-volatile Storage中,通常就是SPI Flash里面。 Sensors & Control Circuitry

记一次蛋疼的Raw socket发送经历。附:Raw socket编程总结

孤街醉人 提交于 2020-08-05 01:17:32
最近在做信息安全导论的实验,实验很简单,就是实现一个ping程序,能够扫描主机是否打开的情况,但是,我也就纳了闷了,每次有个不易发现的bug(可能由于自己知识有限造成的),都得让我碰上,并且还得为这个bug操心好长时间,才能解决。。。。。。(抱怨是最浪费时间的一种行为!)ok~为了下次不再犯同样的错误,现在先记录一下吧~ 我的错误是,在一切都准备好了的时候(初始化套接字,创建套接字,填充icmp数据头,设定超时时间)发送数据包,成功,但是一旦接受就会超时,为此,我找了个能发送成功的程序,一步步的对照着看看哪儿不一样,但是对照完了,发现一些核心代码是一样的。。。。。。这就蛋疼了,然后我就怀疑是不是因为这些小的错误导致的呢?我一步步的改正,首先我怀疑我的可能是因为发送和接受我放在了不同的函数里面,导致,在一个函数返回的时间里,接受函数错过了接受(现在想想真是有病乱投医啊。。。。。。。操作系统在端口应该有缓存的吧,在接受到数据后,会存到缓存里,然后才会调用。。。。。)我就把所有函合并成了一个函数,果不其然,没有任何效果,依旧是发送超时。在经历无尽的折磨以后,我发现我的变量全是定义在类里面的,而其他的程序就是在函数里面直接声明,或者就是全局变量的,难道是因为类,半信半疑我就把所有定义在类里面的变量放到了cpp文件当中,作为全局变量调用,成功了~我去了!不应该啊,这是因为啥??

题解 P6419 【[COCI2014-2015#1] Kamp】

有些话、适合烂在心里 提交于 2020-07-28 12:29:17
题解 - P 6419 \mathrm{P6419} P 6 4 1 9 题目意思 题目传送门 S o l \mathrm{Sol} S o l 因为要求每个点为根的答案,显然会想到 换根 D P DP D P (虽然不一定 我们首先先申明几个变量: f u f_u f u ​ 表示把 u u u 子树内的任务做完并且回到 u u u 点的花费 g u g_u g u ​ 表示 u u u 子树外的花费 d i s u , 0 / 1 dis_{u,0/1} d i s u , 0 / 1 ​ 表示 u u u 子树内的最长链/次长链 u p u up_u u p u ​ 表示 u u u 子树外的最长链 那么对于每个点的贡献 a n s i = f i + g i − max ⁡ ( u p i , d i s i , 0 ) ans_i=f_i+g_i-\max(up_i,dis_{i,0}) a n s i ​ = f i ​ + g i ​ − max ( u p i ​ , d i s i , 0 ​ ) 。这个如何理解:就是子树内的要加子树外的也要加,我们可以选择一个位置 v v v 为结束点,此刻我们就不用回溯至子树根节点了。按照贪心我们选择对答案贡献最大的点。 f u f_u f u ​ 很好求,即 f u = ∑ v ∈ u f v + ( 2 × w u , v

以太坊零知识证明合约及应用开发入门

China☆狼群 提交于 2020-07-27 02:01:05
在这个教程中,我们将学习如何开发一个基于以太坊的零知识身份证明DApp,学习如何开发Circom零知识电路、如何生成并方法Solidity零知识验证智能合约,以及如何利用Javascript在链下生成零知识证据,并在教程最后提供完整的源代码下载。 区块链开发教程链接: 以太坊 | 比特币 | EOS | Tendermint | Hyperledger Fabric | Omni/USDT | Ripple 1、零知识身份证明DApp概述 我们将开发一个零知识应用来证明一个用户属于特定的群组而无需透露用户的具体信息,使用流程如下图所示: 我们的开发过程分为以下几个步骤: 开发零知识电路 生成用于验证零知识电路的Solidity库 开发智能合约并集成上述Solidity库 本地生成证据并在链上进行验证 2、零知识证明以太坊DApp开发环境搭建 就像你不需要完全理解HTTP协议也可以开发web应用一样,已经有很多工具可以帮助开发基于零知识的DApp而无需密码学或数学基础。 我推荐如下的开发语言和工具链: JavaScript/TypeScript:应用采用javascript/typescript开发,因为这两者在以太坊生态中得到很好的支持 Solidity: 智能合约用Solidity开发,因为它很成熟并且社区很好 Truffle:使用Truffle作为智能合约开发和部署框架

单调队列优化DP(超详细!!!)

隐身守侯 提交于 2020-05-08 03:29:55
一、概念 1、单调队列定义:    其实单调队列就是一种 队列内的元素有单调性 (单调递增或者单调递减)的队列,答案(也就是最优解)就存在队首,而队尾则是最后进队的元素。因为其单调性所以经常会被用来维护区间最值或者 降低DP的维数 已达到降维来减少空间及时间的目的。 单调队列的一般应用:      维护区间最值      优化DP 【例一】 求m区间内的最小值(洛谷 P1440) 题目描述 一个含有n项的数列(n<=2000000),求出每一项前的m个数到它这个区间内的最小值。若前面的数不足m项则从第1个数开始,若前面没有数则输出0。 输入格式 第一行两个数n,m。 第二行,n个正整数,为所给定的数列。 输出格式 n行,第i行的一个数ai,为所求序列中第i个数前m个数的最小值。 输入 6 2 7 8 1 4 3 2 输出 0 7 7 1 1 3 思路: 1、暴力枚举以i-1为结尾的前m个数。时间O(n*m),T T T. 2、rmq求解O(nlog n) 貌似会T 3、线段树求解 O(nlog n) 当n=1e7时也超时,空间,代码量大 需要更优的O(n)的解法处理。 4、单调队列来了 因为每一个答案只与当前下标的前m个有关,所以可以用单调队列维护前m个的最小值,    考虑如何实现该维护的过程??    显然当前下标X的m个以前的元素(即下标小于X-M+1的元素

Solidity合约中的访问控制实现:Ownable | Roles | AccessControl

拜拜、爱过 提交于 2020-05-05 23:54:07
OpenZeppelin提供了智能合约的三种访问控制模式:Ownable合约、Roles库和3.0新增的AccessControl合约。在这个教程中,我们将学习这三种访问控制模式的差异,以及如何在自己的以太坊智能合约中利用这些访问控制模式增强Solidity合约的安全性。 用你熟悉的开发语言学习以太坊DApp开发: Java | Php | Python | .Net / C# | Golang | Node.JS | Flutter / Dart 控制对智能合约特定方法的访问权限,对于智能合约的安全性非常重要。熟悉OpenZeppelin的智能合约库的开发者都知道这个库已经提供了根据访问等级进行访问限制的选项,其中最常见的就是 Ownable 合约管理的 onlyOwner 模式,另一个是OpenZeppelin的 Roles 库,它允许合约在部署前定义多种角色并为每个函数设置规则,以确保 msg.sender 具有正确的角色。在OpenZeppelin 3.0中又引入了更强大的AccessControl合约,其定位是一站式访问控制解决方案。 1、Ownable合约 —— 最简单最流行的访问控制模式 onlyOwner 模式是最常见也最容易实现的访问控制方法,它虽然基础但非常有效。该模式假设智能合约存在单一管理员,支持管理员将全新转移给另一个账号。 通过扩展Ownable合约