• 比原空投问答题库题解(三)


    涉及到代码部分(以1.4版本为准)的回答,均可使用notepad++查找对应数字及其变量

    36、 以下哪个错误码代表 "Bytom API Error"?
    A:BTM000
    B:BTM103
    c.:BTM404

    答案:A。搜索结果:bytom-masterapierrors.go:116,BTM000对应bytom API error

    37 、1个BTM可以转换成多少gas?
    A:200000
    B:300000
    C:500000

    答案:A.看第32题所在代码bytom-masterprotocolvalidation x.go:47的(g *GasState) setGas(BTMValue int64, txSize int64) error,可知道单次交易只能付200000GAS(BTMsatoshi)的燃费,1BTM就是100000000BTMsatoshi,所以把1BTM作为单次交易的燃费的话,只会用200000BTMsatoshi

    38、 比原链挖矿的nonce值有多少位?
    A: 32位
    B :64位
    C: 128位

    答案:B,搜索nonce结果可知,nonce用int64(64位)或byte[8](8个字节=64位)储存

    39、 比原链虚拟机叫什么?
    A :EVM
    B: BVM
    C: CVM

    答案:B,Bytom Virtual Machine

    40、 虚拟机操作码OP_HASH160代表什么运算?
    A: RIPEMD160运算
    B :SHA256运算
    C :SM3运算

    答案:A.bytom-masterprotocolvmops.go:306有一行代码OP_HASH160:       {OP_HASH160, "HASH160", opHash160},,与变量opHash160有所关联

    这个变量其实是函数来的。。。bytom-masterprotocolvmcrypto.go:142这个函数,执行3种操作:pop(false),applyCost(cost),push(crypto.Ripemd160(data), false)

    41、 虚拟机操作码OP_SHA256代表什么运算?
    A :SHA3-256运算
    B :SHA2-256运算
    C :SM3运算

    答案:B,bytom-masterprotocolvmops.go:304可看出OP_SHA256对应函数opSha256,这个函数执行的是doHash(vm, sha256.New),可排除SM3这种可能性,又因为下方有函数opSha3执行doHash(vm, sha3.New256),可能这个函数执行的是SHA3-256运算,可得出执行的是SHA2-256运算

    42、 虚拟机操作码OP_CHECKSIG需要取出几个参数?
    A :1个
    B: 2个
    C :3个

    答案:%#%^**(,OP_CHECKSIG操作对应opCheckSig这个函数,bytom-masterprotocolvmcrypto.go:44的opCheckSig执行vm.pushBool(ed25519.Verify(ed25519.PublicKey(pubkeyBytes), msg, sig), true),题干不明,是指传入vm.pushBool几个函数,还是总共需要几个变量给这个返回

    43、 比原链默认交易程序是什么?
    A :P2PKHSigProgram
    B :P2SHProgram
    C :P2SPMultiSigProgram

    答案:C.查看bytom-masterprotocolvmvmutilscript.go关于这个3个函数的注释,P2PKHSigProgram生成脚本控制账号地址,P2SHProgram生成脚本控制联合账号地址,P2SPMultiSigProgram生成脚本控制交易输出

    44、 下面哪个不是比原智能合约的语句类型?
    A :verify
    B: lock
    C :check

    答案:C,比原链 | Equity 语言入门http://8btc.com/forum.php?mod=viewthread&tid=196068 里面有提到,语句有3种,verify语句用来验证表达式的结果是否为真,unlock 语句用来解锁合约中锁定的 value,lock 语句可以将原合约中的 value 以及支付给条款函数的 value 锁定至新的合约中。check并不是语句类型

    45 、比原链智能合约时什么时候上线的
    A :2018.7.24
    B: 2018.7.25
    C :2018.7.26

    答案:C

    46、比原链的地址长度主要为哪两种
    A :P2PKH:40 和 P2SH:60
    B: P2PKH:32 和 P2SH:52
    C: P2PKH:42 和 P2SH:62

    答案:C

    查看freewind教程第12篇:比原是如何通过/create-account-receiver创建地址的,追踪代码到bytom-masteraccountaccounts.go:421,推断cp就是最终返回的地址,生成地址相关的函数createP2PKH(账号地址)和createP2SH(联合账号地址)就在下面,前者执行函数NewAddressWitnessPubKeyHash,进去的地址位数是20;后者执行函数NewAddressWitnessScriptHash,进去的地址位数是32.这俩函数执行的共同函数:EncodeAddress(),这俩类型声明了不同函数,但执行步骤都是str, err := encodeSegWitAddress(a.hrp, a.witnessVersion,a.witnessProgram[:]),进去里面(bytom-mastercommonaddress.go:73),可以看到进去的字符串要执行bech32.ConvertBits(witnessProgram, 8, 5, true)和bech32.Bech32Encode(hrp, combined),很难追踪到底是做了什么。

    blokckmeta.com里面有地址可查,把地址扔进python用len函数查,发现普通的账号地址是42位(前面的bm也算进去了)

    47、比原链节点发现使用的DHT算法?
    A :Chord
    B: Pastry
    C :Kademlia

     答案:C.用kademila这个关键词搜索,会在discover包的注释里面找到这个关键词,意思是比原的p2p网络搜索用这个算法搜索

    48、比原链每个区块奖励多少BTM?
    A :410.5
    B :412.5
    C :414.5

    答案:B,使用4125作为关键词搜索,可以在bytom-readconsensusgeneral.go:22找到baseSubsidy,同文件的66行下能找到计算区块奖励的函数:BlockSubsidy(),可得出在前839999个区块(创世区块除外),每个区块的奖励都是412.5BTM(41250000000BTMsatoshi)

    49、比原链每个区块奖励是固定的吗?
    A :是
    B :不是
    C :不一定

    答案:C,区块高度每840000减半出块奖励,在此期间的块奖励都是固定的,但是区块高度到达840000的倍数之后会变化

    50、比原链智能合约发布时有多少模板?
    A: 8
    B :9
    C :10

    答案:B,使用BTM的资产ID:fffff...fff搜索,会发现bytom-mastercmdytomclicommands emplate.go有9处这种代码,仔细查看对应的指令集,会发现都是合约发布的基本操作

  • 相关阅读:
    转载:混淆包含SlidingMenu、gson等Android代码的proguard写法
    今天解决的两个问题
    C++中指针和引用的区别
    负载均衡服务器session共享的解决方案 (转载)
    Entity Framework的默认值BUG解决方法
    【转】SAPI中的IspeechRecoContext(接口)
    Sapi 添加语法的文章(转载)
    SAPI训练文件存储位置
    Flask第九篇 Flask 中的蓝图(BluePrint)
    Flask 第八篇 实例化Flask的参数 及 对app的配置
  • 原文地址:https://www.cnblogs.com/dgutfly/p/9634398.html
Copyright © 2020-2023  润新知