精华内容
下载资源
问答
  • 我只隐含掉项目信息/甲方乙方双方信息,仅仅就 “达不成价格共识” 的甲方乙方的情绪做一真实展现。起因:甲方发布的项目价格很诱人,但项目的实际工作,确让开发者很难看。 甲方发布项目后,很快与一个开发者达成...
    今天有些“生气”,因为一封甲方发给乙方的邮件,转发给了我。让我对甲方乙方达不成价格共识的原因有了体会。

    我只隐含掉项目信息/甲方乙方双方信息,仅仅就 “达不成价格共识” 的甲方乙方的情绪做一真实展现。

    起因:甲方发布的项目价格很诱人,但项目的实际工作,确让开发者很难看。
                甲方发布项目后,很快与一个开发者达成共识,顺利成交,但让甲方尴尬的是,1个多月过去了,到项目验收的时候,开发者跳票了,说没做这个项目,忙,接其他项目去了。
                [这里不说跳票原因,先批评这个开发者,如果你认为你没有时间,或者没有能力做这个项目,就开始的时候说,不要耽误甲方的时间,不要什么都占着,挑好的容易做的项目做。]

    一,甲方出价低,乙方的过激态度。

    [由于隐含甲方项目信息,部分语句进行了修改]
    甲方的项目描述,只是功能描述,并没有对工作量做细致说明。
    另一个开发者:单就项目描述,自己有过成功的项目,满足甲方需求,甲方出价满足自己需求,积极承接。
    但甲方反馈了详细的开发计划和需求后,乙方发现,与自己的想象出入很大,原本1个版本,变成了3个版本。
    [PS:这里仅象征性说明,工作量增加]

    乙方的过激言辞:

    甲方出价,只够3个版本里的第2个版本。

    所有版本,肯定不做

    有点时间,做做股票都不止这个数,呵呵

    二,甲方没有马上回复报价,而是询问出价理由,乙方回复了理由后,甲方的回复让乙方更加气愤。

    甲方对乙方出价理由的回复。

    第一,网络模块不一样,1ST的版本是不支持HTTP CLASS,必须自己用 SOCKET进行封装一遍
    [甲方答]:此处2nd可以统一使用1st的socket封装的http class.
    换句话说,此处2nd和1st代码可以通用.
    第二,其中因为CPU的型号不同,编码很多工作需要重新来 做,汇编代码需要重新编写
    [甲方答]:编码不需要用汇编代码编写. 这个和cpu无关. 换句话说,即使和cpu有关,也不是我们应用开发者的 事情. 并且网上到处都是C++写好的
    第三,另一个版本需要签名,调试上面增加了复杂性
    [甲方答]:请把需要签名的能力列出来. 例如哪些模块需要的能力必须签名。


    乙方再次过激反映:
    1,让他自己去看看网上到处都有的C++代码把
    2,就算用SOCKET模拟HTTP,也不推荐这样做,会累死的,兼容性太差
    [PS:这是有实战经验的开发者的反馈]

    感叹:
    为什么都是做技术出身,自己做项目的时候都知道,项目需要前期沟通成本,新项目/产品,需要调试和反复测试。而到了外包,这部分成本就转嫁到了开发方了呢?

    这个项目有其特殊性,因为是“研发性”项目,难度高,所以开发方还有能力与甲方谈判。
    如果一个普通项目,比如网络开发,缺乏技术难度,开发者众多,那开发方还能有谈判的资格吗?PK可能是唯一的选择...


              
    展开全文
  • 就比如说合作双方达成一致,共同遵守某个合约。 传统的分布式系统中,由于有着中心服务器进行统一管理,各个子服务器只需要跟着中心服务器进行操作即可。而区块链作为一种去中心化分布式系统,并没有传统意义上的...

    共识算法是区块链非常重要的一种算法,简单来说,共识算法就是为了使网络中的节点得到一致的认可。就比如说合作双方达成一致,共同遵守某个合约。

    传统的分布式系统中,由于有着中心服务器进行统一管理,各个子服务器只需要跟着中心服务器进行操作即可。而区块链作为一种去中心化分布式系统,并没有传统意义上的中心服务器,因此传统的分布一致性算法并不适用于区块链网络。每个服务器都可以是中心服务器,那么这样就需要一种新的算法来维护系统中的一致性了。现在区块链中,主流的共识算法一般为三种:POW,POS和DPOS。

    工作量证明(Proof Of Work)

    工作量证明算法之前已经提到过,在实现微型区块链时用的就是pow算法,这是最传统最经典的共识算法,应用在比特币中。它的原理就是寻找一个以若干个0为开头的哈希串。举个例子,给定字符串“blockchain”,我们给出的工作量要求是,可以在这个字符串后面连接一个称为nonce的整数值串,对连接后的字符串进行sha256哈希运算,如果得到的哈希结果(以十六进制的形式表示)是以若干个0开头的,则验证通过。为了达到这个工作量证明的目标,我们需要不停地递增nonce值,对得到的新字符串进行sha256哈希运算。

    原理非常的简单,也可以说是只需要算就行了。

    这样也存在一个问题,那就是它只要求算力,不要求理解区块链的本身,也就造成了现如今比特币的大量矿机无脑挖矿。就像演唱会的黄牛,买票只为了获取它的利益,并不在意演唱会本身的内容。为了避免这种靠纯运算的共识机制,相继提出来很多新的共识算法。

    权益证明(Proof Of Stake)

    今天重点讲讲POS机制。

    权益证明,它提出来币龄的概念,币龄 = 持有的货币数 * 持有时间,比如说我有100币,持有了30天,那么我的币龄就是3000。币龄越大的节点呢获取记账权(也就是生成区块)的概率越大。每次记完账之后,该节点的币龄就清空。当然,刚获取的币不能直接参与币龄计算,一般是30天之后开始计算币龄。

    那么这样会产生一个问题:囤币来获取绝对记账权。为了防止这种情况发生,会设置一个最大概率,一般设置90天时获得最大记账概率,之后不再增加。

    但是POS本质上还是类似POW的暴力计算,只不过币多的人更有可能挖到矿,降低了POW的全网一致难度,谁算力强谁记账的局限性。

    具体来看代码怎么实现它的吧:


    导入所需包:

    package main
    
    import (
      "bytes"
      "crypto/sha256"
      "encoding/binary"
      "fmt"
      "math"
      "math/big"
      "math/rand"
      "time"
    )

    定义常量设置最大最小概率,这里由于不可能等30天之后再计算币龄,我设置10秒之后开始计算,并且防止数据过大,按分钟计时:

    const (
      dif         = 2
      INT64_MAX   = math.MaxInt64
      MaxProbably = 255
      MinProbably = 235
      MaxCoinAge  = 10
      Minute      = 60
    )

    定义币的数据结构和一个币池,这里币中提出了地址Address概念,一般理解为钱包地址,一般一个钱包属于一个用户,表明这个币的所有权是这个地址对应的用户:

    type Coin struct {
      Time    int64
      Num     int
      Address string
    }
    
    var CoinPool []Coin

    定义区块和链:

    type Block struct {
      PrevHash  []byte
      Hash      []byte
      Data      string
      Height    int64
      Timestamp int64
      Coin      Coin
      Nonce     int
      Dif       int64
    }
    
    type BlockChain struct {
      Blocks []Block
    }

    init函数,设置随机数种子和币池初始化,会在main函数开始前自动执行:

    func init() {
      rand.Seed(time.Now().UnixNano())
      CoinPool = make([]Coin, 0)
    }

    生成创世块,传入的参数是区块上的数据data和挖矿地址addr,这里每个区块的币随机给出1到5,币池增加创世块的币:

    func GenesisBlock(data string, addr string) *BlockChain {
      var bc BlockChain
      bc.Blocks = make([]Block, 1)
      newCoin := Coin{
        Time:    time.Now().Unix(),
        Num:     1 + rand.Intn(5),
        Address: addr,
      }
      bc.Blocks[0] = Block{
        PrevHash:  []byte(""),
        Data:      data,
        Height:    1,
        Timestamp: time.Now().Unix(),
        Coin:      newCoin,
        Nonce:     0,
      }
      bc.Blocks[0].Hash, bc.Blocks[0].Nonce, bc.Blocks[0].Dif = ProofOfStake(dif, addr, bc.Blocks[0])
      CoinPool = append(CoinPool, newCoin)
      return &bc
    }

    生成新区块函数,还是一样,prevHash对应上一个节点的Hash,随机给出1-5币奖励,记录该币的所有者地址addr,币池增加新区块的币:

    func GenerateBlock(bc *BlockChain, data string, addr string) {
      prevBlock := bc.Blocks[len(bc.Blocks)-1]
      newCoin := Coin{
        Time:    time.Now().Unix(),
        Num:     1 + rand.Intn(5),
        Address: addr,
      }
      b := Block{
        PrevHash:  prevBlock.Hash,
        Data:      data,
        Height:    prevBlock.Height + 1,
        Timestamp: time.Now().Unix(),
      }
      b.Hash, b.Nonce, b.Dif = ProofOfStake(dif, addr, b)
      b.Coin = newCoin
      bc.Blocks = append(bc.Blocks, b)
      CoinPool = append(CoinPool, newCoin)
    }

    权益证明算法:

    POS机制的核心算法了,设置的是10s之后开始计算币龄,根据币龄coinAge调整当前难度Dif以获取真实难度realDif。挖矿还是类似POW寻找一个nonce加在尾部,寻找到第一个满足真实难度realDif的sha256哈希串:

    func IntToHex(num int64) []byte {
      buff := new(bytes.Buffer)
      err := binary.Write(buff, binary.BigEndian, num)
      if err != nil {
        panic(err)
      }
      return buff.Bytes()
    }
    
    func ProofOfStake(dif int, addr string, b Block) ([]byte, int, int64) {
      var coinAge int64
      var realDif int64
      realDif = int64(MinProbably)
      curTime := time.Now().Unix()
    
      for k, i := range CoinPool {
        if i.Address == addr && i.Time+MaxCoinAge < curTime {
          //币龄增加, 并设置上限
          var curCoinAge int64
          if curTime-i.Time < 3*MaxCoinAge {
            curCoinAge = curTime - i.Time
          } else {
            curCoinAge = 3 * MaxCoinAge
          }
          coinAge += int64(i.Num) * curCoinAge
          //参与挖矿的币龄置为0
          CoinPool[k].Time = curTime
        }
      }
    
      if realDif+int64(dif)*coinAge/Minute > int64(MaxProbably) {
        realDif = MaxProbably
      } else {
        realDif += int64(dif) * coinAge / Minute
      }
    
      target := big.NewInt(1)
      target.Lsh(target, uint(realDif))
      nonce := 0
      for ; nonce < INT64_MAX; nonce++ {
        check := bytes.Join(
          [][]byte{
            b.PrevHash,
            []byte(b.Data),
            IntToHex(b.Height),
            IntToHex(b.Timestamp),
            IntToHex(int64(nonce)),
          },
          []byte{})
        hash := sha256.Sum256(check)
        var hashInt big.Int
        hashInt.SetBytes(hash[:])
        if hashInt.Cmp(target) == -1 {
          return hash[:], nonce, 255 - realDif
        }
      }
    
      return []byte(""), -1, 255 - realDif
    }

    再写个打印区块和打印币池函数:

    func Print(bc *BlockChain) {
      for _, i := range bc.Blocks {
        fmt.Printf("PrevHash: %x\n", i.PrevHash)
        fmt.Printf("Hash: %x\n", i.Hash)
        fmt.Println("Block's Data: ", i.Data)
        fmt.Println("Current Height: ", i.Height)
        fmt.Println("Timestamp: ", i.Timestamp)
        fmt.Println("Nonce: ", i.Nonce)
        fmt.Println("Dif: ", i.Dif)
      }
    }
    
    func PrintCoinPool() {
      for _, i := range CoinPool {
        fmt.Println("Coin's Num: ", i.Num)
        fmt.Println("Coin's Time: ", i.Time)
        fmt.Println("Coin's Owner: ", i.Address)
      }
    }

    写个main函数测试看看,虚拟两个地址,当然啊真实区块链的地址不可能这么简单,需要使用公钥生成地址算法。

    给addr1先记账,获取一定币,等待可以计算币龄时再次记账,再给新地址addr2记账,看看难度对比:

    func main() {
      addr1 := "192.168.1.1"
      addr2 := "192.168.1.2"
      bc := GenesisBlock("reigns", addr1)
      GenerateBlock(bc, "send 1$ to alice", addr1)
      GenerateBlock(bc, "send 1$ to bob", addr1)
      GenerateBlock(bc, "send 2$ to alice", addr1)
      time.Sleep(11 * time.Second)
      GenerateBlock(bc, "send 3$ to alice", addr1)
      GenerateBlock(bc, "send 4$ to alice", addr2)
      Print(bc)
      PrintCoinPool()
    }

    看看打印结果吧:

    可以看到啊,addr1记前四笔账的时候难度都是20,第五笔的时候,由于之前延迟了11秒,开始计算币龄,难度减小到了15,第六笔账由addr2记账,难度又回到了20,同时看币池,参与币龄计算的币的Time统一到第5笔记账时间,也就是刷新了币龄。

    当然啊,真实环境中肯定不是顺序记账,每个节点都会竞争记账权,最先计算出满足难度的hash串的节点优先记账,并向全网广播,开始下一次记账权争夺。

    好了,今天到这里了~下次讲讲更有效率的共识算法,也是三大主流算法的最后一个:DPOS。

    如果对区块链感兴趣,可以关注下面这个公众号哦,推送的全是区块链干货~

     

     

    展开全文
  • 区块链100篇之第六篇--共识机制

    千次阅读 2018-04-18 18:44:02
    维基百科对于共识的定义是:共识是指分歧双方搁置争议,达成能够被各方所接受的陈述(即使有时只是勉强接受)的社群解决方案。简单的说就是在一个群体中就某一个问题达成共识一致同意采取某一种策略来解决这个问题...

    共识

    共识的英文是Consensus,也可以翻译成一致或一致同意。维基百科对于共识的定义是:共识是指分歧双方搁置争议,达成能够被各方所接受的陈述(即使有时只是勉强接受)的社群解决方案。简单的说就是在一个群体中就某一个问题达成共识,一致同意采取某一种策略来解决这个问题,举个例子:

    • 现在有一个班级,大家需要就什么时候拍毕业照进行投票,有两个方案,方案一是在5月1号拍毕业照,方案二是在论文答辩后拍,这时大家进行投票决定,假设结果大多数人选择了方案一,那么最终大家就需要无条件服从这个决定。这里什么时候拍毕业照是一个问题,而在决定五月初拍这是解决这个问题的一个策略,到这里对应上面共识的定义就大概能明白是什么是共识了。

    这里有一点要注意的就是并不是全部的人都选择方案一,那么为什么最终结果是选择方案一而不是方案二呢,这是因为大家在此之前就已经达成了另一个共识,就是“少数服从多数”,也就是说我们是在已经有了一个共识的前提下达成另一个共识。

    共识机制

    上面的共识应该很容易理解,讲完共识,我们来了解什么是共识机制,共识机制又称共识算法,看一下是维基百科对共识机制的解释:

    • 由于加密货币多数采用去中心化的区块链设计,节点是各处分散且平行的,所以必须设计一套制度,来维护系统的运作顺序与公平性,统一区块链的版本,并奖励提供资源维护区块链的使用者,以及惩罚恶意的危害者。这样的制度,必须依赖某种方式来证明,是由谁取得了一个区块链的打包权(或称记账权),并且可以获取打包这一个区块的奖励;又或者是谁意图进行危害,就会获得一定的惩罚,这就是共识机制。

    用自己的话说就是一套解决如何在彼此都不信任的基础(因为会存在有人捣乱的情况)上仍然可以就某一个问题达成一致的制度。为了一步步的讲解,先来看下面的一张图:

    consensus-png

    这张图我们暂且称左边的人为A,右边的人为B,那么思考一个问题,假如在一开始的时候他们彼此都不认识(彼此不信任),那么他们能否就自己带的是什么颜色的帽子达成共识(不能自己摘下自己的帽子来看)?
    从这张图我们可以确定一下几点:

    • A知道B的帽子是什么颜色的;
    • B知道A知道他的帽子是什么颜色的;
    • A也知道B知道自己知道他的帽子是什么颜色的;

    可以看出A其实没办法验证自己的帽子是什么颜色的,你可能会说那A可以直接问B自己是什么颜色的帽子呀,这样不就达成共识了吗,没错,A确实可以通过询问的方式来知道自己帽子的颜色,但是我上面说了他们彼此是不信任的,假如B告诉A他的帽子是绿色的,那么A得到的结论永远都是错的,所以A是永远都不能证实自己的帽子是什么颜色的。这个其实就是两个将军问题的翻版,两个将军问题已经被证实是无解的。
    我们继续这个问题往下思考,你可能会想那能不能多添加几个人,通过询问其他人自己的帽子是什么颜色的,然后以少数服从多数的原则就可以初步证实自己的帽子是什么颜色的(注意这里是初步证实不是完全证实),那么有出现一个问题,至少需要添加多少人才能满足可以进行判断的要求?如果是增加一个比如C,那么如果C告诉A他的帽子颜色是黄色的(为了简单,就先假设现在只有黄、绿两个选择),A还是无法证实自己的帽子是什么颜色的,因为他根本就不知道他们中谁在说谎;那么增加两个人呢,比如增加C、D,这个时候他们三个人中就可能会有两个人的答案是一致的,那么A就可以基本知道自己的帽子是什么颜色了。到这里你可能还会问,那如果有两个人说谎呢?这样A得到的结果还是错误的(这就是我上面为什么说是初步而不是完全证实,就是这个原因)。那这个问题要如何解决?先不急我们先捋一捋。

    • 共识机制的本质是解决信任的问题,就是在彼此都不信任的基础上达成一致的意见;
    • 在分布式系统(或者区块链)中要达成共识至少需要四个节点以上,少于四个节点是无法达成共识的。

    拜占庭将军问题

    在上面我提到就是如果有两个人都说谎了那该如何解决?问题的答案是解决不了,结果就是A会一直被蒙在鼓里,其实提这个问题是为了引出另一个问题,即拜占庭将军问题,看下面的故事:

    • 拜占庭帝国想要进攻一个强大的敌人,为此派出了10支军队去包围这个敌人。这个敌人虽不比拜占庭帝国,但也足以抵御5支常规拜占庭军队的同时袭击。这10支军队在分开的包围状态下同时攻击。他们任一支军队单独进攻都毫无胜算,除非有至少6支军队(一半以上)同时袭击才能攻下敌国。他们分散在敌国的四周,依靠通信兵骑马相互通信来协商进攻意向及进攻时间。困扰这些将军的问题是,他们不确定他们中是否有叛徒,叛徒可能擅自变更进攻意向或者进攻时间。在这种状态下,拜占庭将军们才能保证有多于6支军队在同一时间一起发起进攻,从而赢取战斗?

    为了简化问题,我们先假设所有的将军是通过口头消息来传递信息的,即消息传递的信道绝无问题,因为如果还要考虑信息在传递的过程中被人修改了这种情况,那问题就要更加复杂了,这里先不讨论这个,后面打算单独写一篇关于拜占庭将军问题,再来详细讲解。

    • 问题分析

    单从上面的说明可能无法理解这个问题的复杂性,我们来简单分析一下:

    先看在没有叛徒情况下,假如一个将军A提一个进攻提议(如:明日下午1点进攻,你愿意加入吗?)由通信兵通信分别告诉其他的将军,如果幸运中的幸运,他收到了其他6位将军以上的同意,发起进攻。如果不幸,其他的将军也在此时发出不同的进攻提议(如:明日下午2点、3点进攻,你愿意加入吗?),由于时间上的差异,不同的将军收到(并认可)的进攻提议可能是不一样的,这是可能出现A提议有3个支持者,B提议有4个支持者,C提议有2个支持者等等。

    再加一点复杂性,在有叛徒情况下,一个叛徒会向不同的将军发出不同的进攻提议(通知A明日下午1点进攻,通知B明日下午2点进攻等等),一个叛徒也会可能同意多个进攻提议(即同意下午1点进攻又同意下午2点进攻)。

    叛徒发送前后不一致的进攻提议,被称为“拜占庭错误”,而能够处理拜占庭错误的这种容错性称为(Byzantine fault tolerance),简称为BFT。

    到这里大概能理解拜占庭将军问题是讲什么的了,对于这个问题如果现在有n个将军和m个叛徒,只要满足n>=3m+1就能达成共识(注意前提是口头消息)。比如有2/3的成员是诚实的,算法就能达到共识。如果叛徒多于1/3,无法达到共识,这些军队无法协调他们的攻击,敌军胜利。

    所以当一个分布式系统中有多余三分之一节点出现了故障时,那对这个系统是毁灭性的,当然这些是理论,现实不一定就是毁灭性的,但是一定是很糟糕的事情。

    区块链的共识算法

    因为区块链是一个分布式的系统,所以它一定存在拜占庭将军问题,那么就需要解决如何保证各个主机状态一致的问题,为了解决这个问题很多人都提出了自己的共识算法,最有名的当属中本聪的POW(工作量证明机制)共识算法,当然还有POS(权益证明机制)、DPOS(股权权益证明机制)、PBFT(拜占庭容错机制)以及RAFT共识算法,对于这些算法在后面都会一一讲到,这里就不讲了,今天主要是理解什么是共识机制以及在区块链中共识机制所要解决的问题。

    结尾

    在本篇最开始的时候我提到了少数服从多数这个共识,其实在比特币中对应的就是选择最长链,会出现这个问题是因为矿工在打包区块的时候会出现一种情况,即有两个矿工同一时刻计算出随机数获得记账权,这个时候就会出现两条链,这两条链会沿着不同的方向发展下去,那么结果就是比特币网络会变得越来越混乱,为了防止这种事情发生,比特币有一个原则就是选择最长链,即在某一时间段内比较哪条链最长(因为算力的不同就会出现在一段时间后总有一条链的长度超过另一条链的长度这种情况),然后把短的链丢弃掉,这其实也是少数服从多数的原则,准确的说应该是短链服从长链。

    这种两个矿工同时挖出一个符合条件的区块的情况也叫作分叉,这就是我下一篇打算讲的比特币分叉。

    展开全文
  • 在生活中也有许多需要达成共识的场景,比如开会讨论,双方或多方签订一份协议,在区块链系统中,每个节点必须要做的事情就是让自己的账本跟其他节点保持一致,如果是在传统的软件结构中,这几乎就不是问题,因为一个...

    共识机制

      所谓共识,就是指大家都打成一致的意思。在生活中也有许多需要达成共识的场景,比如开会讨论,双方或多方签订一份协议,在区块链系统中,每个节点必须要做的事情就是让自己的账本跟其他节点保持一致,如果是在传统的软件结构中,这几乎就不是问题,因为一个中心服务器的存在,也就是所谓的主库,其他从库向主库看齐就好,在实际生活中,很多事情人们也是按照这逻辑来的。比如企业老板发布了一个通知,员工照着做,但是区块链是一个分布式的对等网络结构,在这个结构中没有哪个节点是“老大”,一切都要商量着来,在区块链系统中,如何让每一个节点通过一个规则将各自节点的数据保持一致是一个很核心的问题,这个问题的解决方案就是制定一套共识算法。

      共识算法其实就是一种规则,每个节点都按这个规则去确认各节点的数据,我们暂且抛开算法的原理,先来想一想在生活中我们会如何解决这个问题,假设一群人开会,这群人没有一个领导,大家各抒己见,到最后如何统一一个最终的结果出来呢?实际处理的时候,我们一般在某个时间段选出一个人来发表意见,那个负责汇总大家的内容,然后发布完整的意见,其他人投票表决,每个人都有机会来汇总表达,最后票数最多的按最终意见,这种思路就是一种共识算法了,然而在实际过程中,如果人数多并数量是确定的,那还好处理些,如果人数很多并且数量不可确定,那么很难让每个人去发表意见再投票了,这样效率太低了,我们需要一个机制选出一个代表的人,在共识算法中就是筛选出具有代表性的节点。

      如何筛选呢?其实就是设置一组条件,就像我们筛选运动员一样,给一组指标让大家完成,谁能更好的完成指标,谁就有机会被选上。在区块链系统中,存在着多种这样的筛选方案,比如PoW(Proof of Work)工作量证明、PoS(Proof of Stake)权益证明、DPoS(Delegate Proof of Stake)委托权益证明、PBFT(Practical Byzantine Fault Tolerance)实用拜占庭容错算法等,各种不同的算法,其实就是不同的游戏玩法,这里暂且不进行算法的过程详述,大家只要知道这些都是一些筛选算法就行了。区块链系统就是通过这种筛选算法或者共识算法来使用网络中各个节点的账本数据打成一致的。

    转载于:https://www.cnblogs.com/gslblog/p/8846208.html

    展开全文
  • 共识机制——工作量证明POW

    千次阅读 2018-10-19 16:00:39
    区块链的底层有四部分构成,一个分布式的数据库...在去中心化的系统中,不相关的节点之间如何建立信任进而对区块链的一致达成共识,是一个十分重要的问题,解决这个问题的方法就是利用共识机制。共识机制,就是...
  • 就比如说合作双方达成一致,共同遵守某个合约。传统的分布式系统中,由于有着中心服务器进行统一管理,各个子服务器只需要跟着中心服务器进行操作即可。而区块链作为一种去中心化分布式系统,并没有传统意义上的中心...
  • 双方一致认为,在工厂内外全流程数据打通,确保制造按时按需方面,互联网是重要抓手,在社会化物流和供应链等方面有深入合作的机会,并在AI、区块链等7个方向上达成共识。   “三步走”推进ABC+IoT在钢铁全产业链...
  • 验收测试 定义:是在系统测试之后进行的测试,以...依据合同逐条进行测试,确定软件是否符合双方达成共识 检查移交的资料(程序源码、相关文档、可执行程序等)是否全面 以真实数据测试软件,检验软件系统是否满足...
  • 之所以说区块链技术能够去信任,是因为它是基于密码学原理,而不是基于信用,使得任何达成一致双方能够点对点直接进行支付,不需要第三方中介参与密码学。在计算机技术的加持下,算法强度很高,整个体制的,安全性...
  • 新员工入职培训礼仪与沟通技巧,沟通:双方有共同的话题,最后达成共识一致的行动。 所以:对话、交谈都不是沟通。 沟通能力:对人的理解,只是结构。 沟通结构:提问、聆听、观察、表达
  • 沟通成功的三大标志

    2020-12-26 09:56:24
    2.达成共识。就某一主题,双方形成一致意见,并在沟通结束前进行了总结和确认。 3. 进行了充分的信息、思想和情感交流。通过交流,增强了相互了解,增进了彼此的感情,拉近了双方的距离。 要想使沟通有效,就应...
  • 技法-项目启动

    2020-02-26 17:17:57
    P127页。项目启动的核心人物是项目发起...编写项目任务书的重点在于各干系人达成共识。 P134页。达成项目驱动因素优先顺序的一致。在项目启动前达成项目驱动因素优先顺序的一致非常重要。 p136页。 主要的项目干...
  • 新浪科技讯 美国东部时间3月6日8:53(北京时间3月6日21:53)消息,华友世纪(Nasdaq:HRAY)今天宣布,该公司已经同光线传媒达成一致,将终止2007年11月19日达成的合并协议。华友世纪表示,之所以同光线传媒终止合并协议...
  • 也即协商是协作双方达成共识而减少不一致性或不确定性的过程。 2. 协商的研究范畴 Muller提出了协商研究范畴的一种划分方法,该划分方法比较全面地综合了关于协商研究的各个方面,理顺了各范畴间的相互关系...
  • 南航大学生华为俱乐部签约成立

    千次阅读 2010-09-26 20:02:00
    签字仪式正式开始前,签约双方在亲切友好的氛围中进行了座谈,大家畅所欲言,对俱乐部运营模式、活动推广、双方权利义务达成一致共识双方在签约仪式上指出,要将俱乐部打造成为校企双方资源共享、合作...
  • 总裁演说思维商务谈判中的九大技巧 说起谈判,总让人感到一股双方对决的杀戮之气,令人不寒而栗....这样接下来的谈判就容易朝着一个达成共识的方向进展,而不是剑拔弩张的对抗。当遇到僵持时也可以
  • 区块链介绍

    2020-02-27 20:18:59
    它是一种点对点的电子现金系统,基于密码学原理而不基于信用,使得任何达成一致双方能够直接进行支付,比特币的交易根本不需要通过银行等第三方中介的参与。 区块链的技术原理: (1) 区块链是一种按...
  • 什么是区域链?

    千次阅读 2018-06-14 16:28:34
    区块链(Blockchain)是分布式数据存储...它是一种点对点的电子现金系统,基于密码学原理而不基于信用,使得任何达成一致双方能够直接进行支付,比特币的交易根本不需要通过银行等第三方中介的参与。 区块链的技...
  • 2017年1月7日,北京信息灾备技术产业联盟(以下简称“联盟”)与国家电子计算机质量监督检验中心本着平等互利原则,经友好协商,就联盟专家资源共享、科研、产业推广等领域的合作关系达成共识双方结成战略合作伙伴,...
  • 需求确认是指开发方和客户共同对需求文档进行评审,双方对需求达成共识后作出书面承诺,使需求文档具有商业合同效果。 需求跟踪是指通过比较需求文档与后续工作成果之间的对应关系,建立与维护“需求跟踪矩阵”,...

空空如也

空空如也

1 2
收藏数 25
精华内容 10
关键字:

双方达成一致共识